Unix 命令对其中一列中的值进行计数,并将此值添加到每行的最后一列

  • 本文关键字:一列 添加 最后 Unix 命令 unix sed awk
  • 更新时间 :
  • 英文 :

带有

制表符分隔符的.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 命令行流处理程序的解决方案。任何帮助都非常感谢。提前谢谢。

使用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

最新更新