将 shell 脚本变量传递给 AWK 命令

mat*_*123 3 awk shell-script

我希望能够调用包含以下命令的 shell 脚本。

awk -F $'\xE7' '{OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0 }' > outputfile
Run Code Online (Sandbox Code Playgroud)

但是我希望能够将一个 shell 脚本变量传递到这个命令中,该命令将用于替换$3AWK 命令中的 。

如何将 shell 脚本变量传递到此 AWK 命令中?

Den*_*son 5

正确的方法是使用 AWK 的变量传递功能。此外,您可能只需要设置OFS一次,因此您应该在BEGIN子句中进行设置。

awk -F $'\xE7' -v awkvar="$shellvar" 'BEGIN {OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile
Run Code Online (Sandbox Code Playgroud)

您还可以使用-v来设置OFS

awk -F $'\xE7' -v awkvar="$shellvar" -v OFS ="¬" '{ $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile
Run Code Online (Sandbox Code Playgroud)

我只是将变量添加到print语句中,因为我不知道您想如何使用它。