![需要取出linux中各种值的计数](https://linux22.com/image/119726/%E9%9C%80%E8%A6%81%E5%8F%96%E5%87%BAlinux%E4%B8%AD%E5%90%84%E7%A7%8D%E5%80%BC%E7%9A%84%E8%AE%A1%E6%95%B0.png)
aff_id=752&off_id=4503trans_id=acacthf60cxr
aff_id=752&off_id=4553trans_id=acacthf60cxr
aff_id=752&off_id=4543trans_id=acacthf60cxr
aff_id=752&off_id=4543trans_id=acacthf60cxr
aff_id=752&off_id=4553trans_id=acacthf60cxr
aff_id=752&off_id=4503trans_id=acacthf60cxr
aff_id=752&off_id=4513trans_id=acacthf60cxr
aff_id=752&off_id=4513trans_id=acacthf60cxr
aff_id=752&off_id=4503trans_id=acacthf60cxr
这是我的文件的格式,具有相同的 aff_id 和不同的“off_id”。我需要根据“off_id”取出计数。
答案1
awk解决方案:
awk -F'[=&]' '{ a[substr($4,0,4)]++ }END{ for(i in a) print i,a[i] }' file
-F'[=&]'
- 复杂的字段分隔符a[substr($4,0,4)]++
-off_id
值位于第四个字段中$4
,格式类似于4503trans_id
.
因此,substr($4,0,4)
就会提取出需要的值4503
。
该数组将使用其出现次数作为值的值a
进行索引off_id
输出:
4503 3
4513 2
4543 2
4553 2