需要取出linux中各种值的计数

需要取出linux中各种值的计数
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

相关内容