计算包含特定字段的相同值的行
问题描述:
请将我的文件包含以字符“|”分隔的字段,我想算一个包含字段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
谢谢
答
使用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
你试过了什么? – 2014-10-09 19:39:47
我试过awk -F \ | 'NF> 1 {A [$ 5] ++}; END {for(A中的字段){print field“=”A [field]}}“但对于一个字段是5,但它必须基于1 and 5 – mond14 2014-10-09 19:47:49
发布在您的问题中 – 2014-10-09 19:50:11