使用awk获取唯一数量的记录

时间:2017-03-03 20:09:45

标签: shell awk

cat z.txt

2017-02-06 21:27:43,100,3,9,2,2222223196
2017-02-06 21:27:46,101,3,11,2,2222223196
2017-02-06 21:27:43,100,3,9,2,2222223188
2017-02-06 21:27:43,100,3,9,2,2222223177

我有一个文件' z.txt'有上述记录, 我想查看field4的值为9的记录数。

有1个条件 - >如果'字段4具有值9'并且在另一个记录'字段4中具有值11' &安培;两者都具有相同的字段6.在这种情况下记录1& 2,具有相同的字段6,所以应该省略它们。

在我想要的输出中,仅在2个字段之下,对于唯一字段6,在字段4中只有值9

2017-02-06 21:27:43,100,3,9,2,2222223188
2017-02-06 21:27:43,100,3,9,2,2222223177

我想用awk来实现这个目标。

1 个答案:

答案 0 :(得分:0)

awk救援!

$ awk -F, '$4==9   {v[$6]=$0} 
           a[$6]++ {delete v[$6]} 
           END     {for(k in v) if(a[k]==1) print v[k]}' file

2017-02-06 21:27:43,100,3,9,2,2222223177
2017-02-06 21:27:43,100,3,9,2,2222223188

请注意,由于关联数组不会保留顺序,有多种方法可以修复它,但不确定它是值得的。