【问题标题】:unix command to count the values in one of the column and add this value to last column in each rowunix命令计算其中一列中的值并将该值添加到每行的最后一列
【发布时间】:2012-08-18 18:16:39
【问题描述】:

.txt 文件以制表符分隔,有 4 列,多行,每一列的格式为:

12345  a  xxx   yyy  
12345  b  xxx   yyy     
67890  c  xxx   yyy  
12345  d  xxx   zzz   
67890  e  xxx   zzz  
12345  f  xxx   zzz  
23456  g  xxx   zzz   

如何计算 .txt 文件中整个第一列中每个唯一整数的实例,并通过将第五列附加到 来将计数添加为每行中的第五个值。 txt 文件。

12345  a  xxx   yyy  1  
12345  b  xxx   yyy  2     
67890  c  xxx   yyy  1   
12345  d  xxx   zzz  3   
67890  e  xxx   zzz  2  
12345  f  xxx   zzz  4  
23456  g  xxx   zzz  1 

我更喜欢仅使用 UNIX 命令行流处理程序的解决方案。非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: unix sed awk


    【解决方案1】:

    一种使用awk的方式:

    awk '
        BEGIN { OFS = "\t"; }
        { 
            key[ $1 ]++;
            print $0, key[ $1 ];
        }
    ' infile
    

    输出:

    12345  a  xxx   yyy     1
    12345  b  xxx   yyy     2
    67890  c  xxx   yyy     1
    12345  d  xxx   zzz     3
    67890  e  xxx   zzz     2
    12345  f  xxx   zzz     4
    23456  g  xxx   zzz     1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      相关资源
      最近更新 更多