文本: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
阅读(6257) | 评论(0) | 转发(0) |