【问题标题】:Comparing first column with second column and taking out the values which are not uniq in second column in shell script将第一列与第二列进行比较,并取出 shell 脚本中第二列中不唯一的值
【发布时间】:2016-04-07 07:35:11
【问题描述】:

将第一列与第二列进行比较,并取出 shell 脚本中第二列中不唯一的值。

示例输入:

58811051802414,50064179170,0000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

58811051802414,50064179170,0000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

70128031244580,50064178465,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

70128031244580,50064178255,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

期望的输出:

58811051802414,50064179170,0000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

70128031244580,50064178465,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

70128031244580,50064178255,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

我们需要查看第一列的值是 uniq 并与同一文件的第二列进行比较,如果 uniq 打印该值,我们需要省略重复并仅打印 uniq 值。

第二次修改。

70128031244580,50064178465,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

70128031244580,50064178255,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06

这两个第一列有不同的第二列,我们需要将其打印为

70128031244580,Found 2 different values. 

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    awk 来救援!

    $ awk -F, '!a[$1,$2]++' file
    
    58811051802414,50064179170,0000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06
    70128031244580,50064178465,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06
    70128031244580,50064178255,1000,TEREAE,20160630,TESTIIII,,,,20130628T04:30:06
    

    将其连接到第二个脚本

    $ awk -F, '!a[$1,$2]++' file | 
      awk -F, '{a[$1]++} END{for(k in a) if(a[k]>1) print k, "Found " a[k] " values"}'
    
    70128031244580 Found 2 values
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多