- 论坛徽章:
- 771
|
本帖最后由 Herowinter 于 2013-12-13 13:52 编辑
回复 1# yestreenstars
折腾了一个中午,终于勉强写出来了,用了
三维数组,第一维1-5分别表示name1-5,
第二维 1-3 表示 MG SD SH
第三维表示 A C D G
代码如下,请大大指教。- awk '{if($1~/MG/)for(i=2;i<=NF;i++)a[int(i/2),1,$i]++;else if($1~/SD/)for(i=2;i<=NF;i++)a[int(i/2),2,$i]++;else if($1~/SH/)for(i=2;i<=NF;i++)a[int(i/2),3,$i]++}END{c[1]="A";c[2]="C";c[3]="D";c[4]="G";print "\tMG\tSD\tSH";for(i=1;i<=5;i++){printf "name"i;for(j=1;j<=3;j++){flag=0;for(k=1;k<=4;k++)if(a[i,j,c[k]]>0){if(!flag)printf "\t%d",a[i,j,c[k]];else printf ",%d",a[i,j,c[k]];flag=1}}print ""}}' i
- MG SD SH
- name1 2,2 1,1 3,3
- name2 2,2 2,2 2,2
- name3 2,2 1,3 2,2
- name4 2,2 3,1 2,2
- name5 2,2 2,2 2,2
复制代码 |
|