如何匹配 awk 中的 shell 变量?

How to match to a shell variable in awk?

我正在尝试将 shell 变量与用逗号分隔的第二列相匹配。 所以我将 $INOW 设置为 ls 并且命令看起来像这样

awk -F"," ' == $INOW {print "yeah it's there"}' commands.csv

我试过在 $INOW 周围加上引号。没有不同。我如何匹配 shell 变量?

您不能在 awk 中直接使用 shell 变量。相反,您可以使用 -v

创建一个 awk 变量

例子

$ a_variable=hello
$ awk -v var="$a_variable" "{print var}"
hello

所以在你的情况下你可以这样写,

$ awk -F"," -v inow="$INOW" ' == inow {print "yeah its there"}' commands.csv
awk -F"," '{if( == '$INOW') {print "yeah its there"}else{print "nope"}}' commands.csv