1

我最近在计算一个字段中某个值的重复次数方面获得了很大帮助,但我的下一步是根据另一个字段中的值 ($3) 计算一个字段中的值重复次数 ($1)结果在行尾,如下例所示:

输入文件
1,2,3
1,1,1
3,2,3
4,1,4
2,1,3
5,2,2
5,1,5
5,4,6

输出文件

1,2,3,1    
1,1,1,2    
3,2,3,1    
4,1,4,1    
2,1,3,1    
5,2,2,1    
5,1,5,3    
5,4,6,0

如果可能的话,我正在考虑用 awk 来做这件事,但很高兴有任何其他建议。

4

1 回答 1

1

这是一种使用方法awk

awk -F, 'FNR==NR { a[$1]++; next } { print $0, ($3 in a ? a[$3] : "0") }' OFS=, file file

结果:

1,2,3,1
1,1,1,2
3,2,3,1
4,1,4,1
2,1,3,1
5,2,2,1
5,1,5,3
5,4,6,0

解释:

FNR==NR { ... }   # for the first file in the arguments list

a[$1]++           # add column one to an array incrementing it's value.

next              # skip processing the rest of the code

{ ... }           # for every line in the second file in the arguments list

print $0          # print the line

($3 in a ? a[$3] : "0")    # ...followed by the value of the third field in the
                           # array if it is indeed in the array, else print "0".
                           # this is a ternary operator, much like an if/else 
                           # statement
于 2013-02-01T05:39:16.840 回答