我最近在计算字段中重复值的次数方面得到了很多帮助,但我的下一步是根据另一个字段中的值计算字段中重复值的次数($ 1) ($ 3)结果在行尾,如下例:
输入文件
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这样做,但是对任何其他建议感到高兴。
答案 0 :(得分: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