unix命令来计算其中一列中的值,并将此值添加到每行的最后一列

unix命令来计算其中一列中的值,并将此值添加到每行的最后一列,unix,sed,awk,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文件中,将计数作为每行的

带有制表符分隔符的.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文件中,将计数作为每行的第五个值


我更喜欢只使用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
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