我希望能够调用一个继续执行以下命令的 shell 脚本。
awk -F $'\xE7' '{OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0 }' > outputfile
但我希望能够将一个 shell 脚本变量传递到这个命令中,用于替换$3
AWK 命令中的变量。
如何将 shell 脚本变量传递到这个 AWK 命令?
答案1
单引号会阻止扩展。请将其切换。
awk ... '...'"$foo"'...' ...
答案2
正确的做法是使用 AWK 的变量传递功能。另外,您可能只需要设置OFS
一次,因此应该在子句中设置BEGIN
。
awk -F $'\xE7' -v awkvar="$shellvar" 'BEGIN {OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile
您还可以使用-v
来设置OFS
:
awk -F $'\xE7' -v awkvar="$shellvar" -v OFS ="¬" '{ $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile
我只是将变量添加到print
语句中,因为我不知道您想如何使用它。
答案3
awk 具有ENVIRON
用于访问环境的数组:
$ FOO=bar awk 'BEGIN{print ENVIRON["FOO"]}'
bar