将带空格的变量从 bash 传递到 awk

将带空格的变量从 bash 传递到 awk

我正在尝试将包含空格的变量从 bash 传递到 awk。我有一个简单的脚本,用于使用单个字符串变量执行此操作(在其中我在文件的第一列中搜索变量),例如:

var=string

awk -v v=$var '(index($1, v) !=0) {print}' FILE

如果 ,这不起作用var="string1 string2"。我有新的搜索,其中变量是由空格分隔的单词组,如第二个变量中所示。例如,

var="string1 string2 string_n"

awk -v v=$var '(index($1, v) !=0) {print}' FILE

答案1

您还必须$var在命令中输入双撇号awk,因此:

varName="a string with spaces"
awk -v var="$var" '{...your awk code...}'

这是因为您的 awk 命令将由 shell 调用,而大多数 shell(包括 bash)在变量替换后都会忘记标记。

相关内容