我正在尝试将包含空格的变量从 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)在变量替换后都会忘记标记。