awk检查特定字段的值是否存在于数组或文件中

时间:2014-10-13 11:39:55

标签: shell awk sed

我有这个代码:

awk -F' *\\| *' 'FNR==NR {a[$1];next} $2==2 && $4==3 && $5 in a &&  ($3==11 || $8 in ..)'  file1.conf file2

我想添加另一个条件来验证字段$ 8是否存在于值[1,2,3,4,5 ...]的数组中?

我已经使用一个文件检查文件中是否存在$ 5的值,但我不知道如何添加另一个数组以检查数组或文件中是否存在$ 8的值

这是list.txt文件:

1 #error code

2 #submit code

3 #delivery code

.

.

谢谢

1 个答案:

答案 0 :(得分:0)

假设您的列表数据位于名为list.txt的文件中,您可以将awk命令修改为:

awk -F' *\\| *' -v lf='list.txt' 'BEGIN {
       while (getline p < lf) {
          sub(/[ #].*$/, "", p);
          d[p];
       }
       close(lf)
    }
    FNR==NR {
       a[$1];next
    }
    $2==2 && $4==3 && $5 in a &&  ($3=11 || $8 in d)'  file1.conf file2