Почему GSUB не работает в AWK?

Я пытаюсь сделать подстановку с AWK, передавая две переменные, которые будут использоваться при подстановке.

Моей первоначальной попыткой было:

FILE=a
cat $FILE | awk -v var1="$Linea_SF" -v var2="$Linea_EF" '{gsub(/var1/,"var2");}1'

содержимое файла a:

H224:N3-H224:N3H

Переменные:

Linea_SF=H224:N3-H224:N3H
Linea_EF=H224:N3-S105:O4H

Но это не делает нужной подстановки.

Why?

Есть ли другой способ сделать это, как sed или что-то еще?

1
задан 16 January 2021 в 01:43

1 ответ

Это не работает, потому что / VAR1 / и «VAR2» , соответственно, A постоянной Regexp и строковый литерал .

Вы можете использовать значение VAR1 как динамическое регулярное выражение или вычисленного Regexp и значение VAR2 в виде строки замены Начиная GSUB (var1, var2) , то есть

$ awk -v var1="$Linea_SF" -v var2="$Linea_EF" '{gsub(var1,var2);}1' "$FILE"
H224:N3-S105:O4H

(вам не нужно CAT ... | С awk может читать файлы напрямую).

2
ответ дан 18 March 2021 в 23:43

Другие вопросы по тегам:

Похожие вопросы: