我如何使用 awk/Grep 搜索指定列中的变量

我如何使用 awk/Grep 搜索指定列中的变量

我有如下数据:

apple pear sugar pizza
pizza chicken pasta turkey

我想 grep 查找“pizza”,但只 grep 第四列。我知道我可以使用:

awk '$4 == "pizza"' 

但是我有一个名为 food 的变量,其中包含“pizza”一词。当我做

food=pizza
awk '$4 == "$food"'

我收到一个错误,当我更改为双撇号时,我收到此错误:

awk: line 1: syntax error at or near ==

我怎样才能做到这一点?

答案1

您的 shell 变量不会在 awk 程序使用的单引号内扩展。

您可以使用以下选项将 shell 变量传递给 awk -v

food=pizza
awk -v food="$food" '$4 == food'

相关内容