您的位置:首页 > 其它

awk之特征相同行的合并 ~转

2016-12-23 16:40 134 查看
awk之特征相同行的合并

文本:

1001 hisk01
1001 hisk02
1001 hisk03
1002 hisk04
1002 hisk05
1002 hisk06
1003 hisk07
1003 hisk08

特征相同的合并成一行:

1001 hisk01 hisk02 hisk03
1002 hisk04 hisk05 hisk06
1003 hisk07 hisk08

awk '{if($1==x){i=i" "$2}else{if(NR>1){print i};i=$0};x=$1;y=$2}' file <(echo)


[解析]
这也是老生常谈的内容了,不过这句代码有两个新颖的地方,按照这种判断格式比较更科学一些。<(echo)这是 yinyuemi老师 的一种新写法,可以省略掉最后的 END 输出,很实用。

awk '{a[$1]=a[$1]?a[$1]" "$2:$2}END{for(i=0;i++<asorti(a,b);)print b[i],a[b[i]]}' file


sed ':a;N;s/\(.* \)\( .*\)\n\1/\1\2/;ta;P;D' file


我自己写的,繁琐~~

awk '{a[$1]++; b[$1, a[$1]]=$2}END{for(i in a) {printf("%s: ", i); for(j=1; j<=a[i]; j++) printf("%s ",b[i,j]); printf("\n")}}' data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: