文本:
aaa conn
bbb plus
ccc main
bbb plus
ccc plus
aaa plus
ddd main
ddd main
bbb plus
统计以第一个字段为特征,第二个字段里的关键字出现的次数:
aaa conn:1 main:0 plus:1
bbb conn:0 main:0 plus:3
ccc conn:0 main:1 plus:1
ddd conn:0 main:2 plus:0
- awk '{a[$1]=$1;b[$2]=$2;c[$1,$2]++}END{for(j=1;j<=asort(a);j++){printf a[j];for(i=1;i<=asort(b);i++)printf FS b[i]":"c[a[j],b[i]]+0;printf RS}}' file
[解析]
以$1为下标把$1的内容存入数组a里,把$2也存入数组b中,再把$1和$2为下标进行自加,统计数量。最后把a排序,那么a[j]的值就是排序后的$1的去重的内容,接下来再把b进行排序,那么d[i]的值就是对应的排序后的$2的字段,然后把数组a和数组d的值当作下标来提取数组c的记数,如果为空加0结果为会0,否则为空不显示,如果本身存在值也不会影响该值。
阅读(2805) | 评论(0) | 转发(0) |