2017-03-03 55 views
-1

猫z.txt获得独特记录数要使用AWK

 
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”具有上面记载, 我要检查多少记录有在那里字段4有一个值为9.

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

在输出我想要的,下面仅2个字段,其中对于唯一的字段6中,仅值9已经进来字段4

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

欲达致这使用AWK。

回答

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 

请注意,由于关联数组不能保存顺序,因此有办法解决它,但不确定是否值得付出努力。

+0

@ karakfa.1更多的查询,在上面的例子中,我们忽略了第2条记录,因为第6条在两条记录中都是相同的,但现在我想添加条件,如果第1条记录有时间戳2017-02-06 21:27:43第二条记录有时间戳2017-02-06 21:27:44,现在两条记录之间的时间差只有1秒,但是如果时间差超过2分钟,[field4 =值9&字段4 =值11 {在这种情况下,两个字段都是相同的字段6}],然后打印这条记录,其中field4 =值9,所以期望的输出是 第1条记录,第3条记录和第4条记录[field4 = value9记录 – swapneil

+0

这不是如何工作!用这个变体创建一个新问题,你可以参考这个。如果这回答了上面投票和/或接受它的问题。另外,如果你认为它是错的投票它,我会删除它。 – karakfa