我想将预定义变量作为awk脚本的列号传递。我去除了不必要的部分,下面是我想要完成的示例。以下是我到目前为止尝试过的部分内容。
原因:这是一个半长脚本,尽管我想在脚本的早期定义列,但目前可以使用,因为这会使脚本随着列的更改而更容易更新。
我希望将“状态”变量传递给awk的列标识符,例如:
#/bin/bash
export state='$6'
cat ~/file | awk -v column="$state" 'state!="FAILED"'
运行上面的代码会生成确实具有第6列为“ FAILED”的行,因此一定有问题。尽管awk '$6!="FAILED"'
正常工作
到目前为止我尝试过的其他事情:
awk '{ENVIRON["state"]!="FAILED"}'
,与1相同的修改答案 0 :(得分:1)
这应该有效:
state=6
cat ~/file | awk -v column="$state" '$column != "FAILED"'
awk中的 $var
将获得由变量var
的值指定的字段。
因此,$NF
将获得最后一个字段。请注意,此处的awk变量为column
,不是 state
。
例如:
% seq 1 20 | paste - - - -
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
% seq 1 20 | paste - - - - | awk -v column=3 '{print $column}'
3
7
11
15
19