标题: [问题求助] [已解决]gawk如何把第一列相同的行拼接 [打印本页]
作者: 随风 时间: 2011-10-28 16:19 标题: [已解决]gawk如何把第一列相同的行拼接
本帖最后由 随风 于 2011-10-28 22:30 编辑
gawk如何把第一列相同的行拼接
如下
- c 次
- womf 我们
- c 寸
- c 错
- zh 综合s
- d 的
- zh 综合
- d 第
- zi 造成
复制代码
要求结果
- c 次 寸 错
- womf 我们
- zh 综合s 综合
- d 的 第
- zi 造成
复制代码
作者: 随风 时间: 2011-10-28 16:34
感觉我的有点啰唆,有简洁点的方法吗?- {
- a[$1]=a[$1] " " $2
- c[$1]++
- if (c[$1] == 1){i++;b[i]=$1}
- }
- END {
- for (j=1;j<=i;j++) print b[j],a[b[j]]
- }
复制代码
作者: sxw 时间: 2011-10-28 21:20
Perl版本的:(看起来更啰嗦了)- while(<DATA>) {
- my($a,$b)=split;
- push @{$hash{$a}},$b;
- }
- for (keys %hash) {
- print "$_ @{$hash{$_}}\n";
- }
- __DATA__
- c 次
- womf 我们
- c 寸
- c 错
- zh 综合s
- d 的
- zh 综合
- d 第
- zi 造成
复制代码
作者: HAT 时间: 2011-10-28 23:13
- gawk "{a[$1]=a[$1]\" \"$2}END{for(i in a)print i,a[i]}" a.txt >b.txt
复制代码
作者: sxw 时间: 2011-10-28 23:38
或则单行命令:- perl -lane "push @{$hash{$F[0]}},$F[1];END{print \"$_ @{$hash{$_}}\" for (keys %hash)}" a.txt >b.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |