如何将预定义变量传递到awk列函数中?

时间:2019-04-12 07:11:19

标签: awk

我想将预定义变量作为awk脚本的列号传递。我去除了不必要的部分,下面是我想要完成的示例。以下是我到目前为止尝试过的部分内容。

原因:这是一个半长脚本,尽管我想在脚本的早期定义列,但目前可以使用,因为这会使脚本随着列的更改而更容易更新。

我希望将“状态”变量传递给awk的列标识符,例如:

#/bin/bash

export state='$6'


cat ~/file | awk -v column="$state" 'state!="FAILED"'

运行上面的代码会生成确实具有第6列为“ FAILED”的行,因此一定有问题。尽管awk '$6!="FAILED"'正常工作

到目前为止我尝试过的其他事情:

  1. 将$ state定义为6而不是'$ 6',并将$包含在awk!=命令中。
  2. awk '{ENVIRON["state"]!="FAILED"}',与1相同的修改

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