如何将预定义变量传递到awk列函数中?
我想传递一个预定义变量作为awk脚本的列号。我已经去掉了不必要的部分,下面是我想做的一个例子。下面是我到目前为止尝试的部分内容 原因:这是一个半长的脚本,目前可以运行,不过我想在脚本的早期定义列,因为这将使脚本在列更改时更容易更新 我希望将“state”变量传递给awk的列标识符,例如:如何将预定义变量传递到awk列函数中?,awk,Awk,我想传递一个预定义变量作为awk脚本的列号。我已经去掉了不必要的部分,下面是我想做的一个例子。下面是我到目前为止尝试的部分内容 原因:这是一个半长的脚本,目前可以运行,不过我想在脚本的早期定义列,因为这将使脚本在列更改时更容易更新 我希望将“state”变量传递给awk的列标识符,例如: #/bin/bash 导出状态=“$6” cat~/file | awk-v列=“$state””状态=“失败” 运行上述代码会生成列6确实为“FAILED”的行,因此一定是出了什么问题。而awk'$6=“失
#/bin/bash
导出状态=“$6”
cat~/file | awk-v列=“$state””状态=“失败”
运行上述代码会生成列6确实为“FAILED”的行,因此一定是出了什么问题。而awk'$6=“失败”
按预期工作
到目前为止,我尝试了不同的方法:
awk'{ENVIRON[“state”]!=“FAILED”}
,修改与1相同state=6
cat ~/file | awk -v column="$state" '$column != "FAILED"'
awk中的$var
将获得变量var
的值指定的字段。
因此,$NF
将获得最后一个字段。请注意,这里的awk变量是列
,而不是状态
例如:
% 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
在那里,您不需要
cat
,awk可以自己读取文件。除此之外,LGTM将列
重命名为awkvar
并将状态
重命名为shellvar
。现在你明白你的问题是什么了吗?