请,我有一个文件,其中包含由字符" |"分隔的字段。我想计算字段1和字段5中包含相同值的行
abc|2| 11| 3| 1000| 0|scql| 29| | | 0| 0| plk| stv| 2| 0
trc|2| 20| 3| 1200| 0|tkgl| 0| pajd|jahd| 0| 0| klm|fdkl|1|0
mlm|2| 0| 3| 1300| 0|mlpo| 0| | | 0| 0| qnhd| pkjs| 2| 0
klm|2| 0| 3| 1300| 0|mlpo| 0| | | 0| 0| qnhd| pkjs| 2| 0
kkkm|2| 0| 3| 1600| 0|mlpo| 22| | | 0| 0| qnhd| pkjs| 2| 0
ljkkk|9| 0| 5| 1600| 0|mlpo| 22| | | 0| 0| qnhd| pkjs| 2| 0
klm|7| 0| 3| 1300| 0|mjkjlpo| 0| | | 6| 0| qnhd| pkjs| 2| 0
kkkm|2| 0| 7| 1600| 0|mlpo| 22| | | 0| 0| qnhd| pkjs| 2| 0
输出应该是这样的:
abc 1000 1
trc 1200 1
mlm 1300 1
klm 1300 2
kkkm 1600 2
ljkkk 1600 1
我尝试了awk -F\| 'NF > 1 {A[$5]++};END{for (field in A){print field"="A[field]}}'
但基于一个字段,即5.但它必须基于1和5
谢谢
答案 0 :(得分:1)
使用awk
即可:
awk -F' *\\| *' '{k=$1 OFS $5; b[k]++} END {for (i in b) print i, b[i]}' OFS='\t' file
klm 1300 2
trc 1200 1
abc 1000 1
mlm 1300 1
kkkm 1600 2
ljkkk 1600 1