我正在尝试通过传递将在替换中使用的两个变量来使用 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"
分别是正则表达式常量和字符串文字。您可以将值
var1
用作动态正则表达式或计算正则表达式,并将值var2
用作替换字符串,方法是编写gsub(var1,var2)
ie(您不需要
cat ... |
,因为awk
可以直接读取文件)。