a.txt内容如下:
4567
5566
5566
4567
3465
4567
b.txt内容如下:
5564,a
4567,b
2345,c
3465,d
5566,e
比较a.txt第一列和b.txt中第一列是否相同,如果相同则将b.txt中的第二列次数+1,生成结果
c.txt:
b=3
d=1
e=2
请问如何通过awk工具来实现这个过程?
大哥你好厉害!!
不好意思啊,实际需求应该是这样,b.txt中第二列的类别可能是相同的,然后输出c.txt中的b=5为a.txt中1111和2222总共出现5次,a=0和c=1也类似这样计算,应该如何改进啊:
a.txt内容如下:
1111
2222
2222
1111
3333
1111
b.txt内容如下:
4444,a
1111,b
5555,a
3333,c
2222,b
生成结果
c.txt:
a=0
b=5c=1
awk -F',' 'NR==FNR{a[$1]++;next}{c[$1]=($1 in a)?a[$1]:0;print $2"= "c[$1]}0' a.txt b.txt |awk -F'=' '{a[$1]+=$2}END {for( i in a ) print i"= " a[i]}' | sort -n > c.txt
awk -F',' 'NR==FNR{a[$0]+=1;next}{for(i in a)if(i==$1){b[$2]+=a[i];delete a[i];break}else{b[$2]=0}}END{for(k in b )print k"="b[k]}' a.txt b.txt
两种方法,你看那个比较顺眼就用那个吧。