awk:检查字段值是否在给定的一个中

时间:2014-03-26 11:01:07

标签: awk

我需要打印所有字段,其中字段$ 2是以下之一(23,17,21,1)

awk -F $'\t' 'BEGIN { arr = (23, 17, 21, 1) } {if ($2 in arr) {print $0}}' file.txt

不起作用

1 个答案:

答案 0 :(得分:3)

这应该做:

awk '$2~/^(23|17|21|1)$/' file

这将测试字段#2是否为23,17,21或1

之一

仅举例说明如何使用数组:

awk 'BEGIN{split("23 17 21 1",tmp); for (i in tmp) arr[tmp[i]]} $2 in arr' file

使用数字创建变量data以使用
split拆分为数组arr
在每行的arr前循环显示所有值,如果在arr中找到$2则打印。

编辑:更新了Eds建议。