Я пытаюсь сделать подстановку с 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 или что-то еще?
Это не работает, потому что / 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
может читать файлы напрямую).