shell-[文本处理] 第一列相同,输出第三列到一行
2014-11-03 07:32
295 查看
原始数据:
1 Alyrata 489168
1 Athaliana AT5G23110.1
1 Crubella Carubv10000018m
1 Thalophila Thhalv10003499m
1 Brapa Bra013017
1 Tparvula Tp2g24010
2 Alyrata 355042
2 Athaliana AT4G17140.3
2 Crubella Carubv10006303m
2 Thalophila Thhalv10024176m
2 Brapa Bra021067
2 Tparvula Tp7g17050
3 Alyrata 473945
3 Athaliana AT1G48090.1
3 Crubella Carubv10012395m
3 Thalophila Thhalv10011170m
3 Brapa Bra014101
3 Tparvula Tp1g35040
如果第一列相同 则把第三列的合并为一行 最终结果为
1 489168 AT5G23110.1 Carubv10000018m Thhalv10003499m Bra013017 Tp2g24010
2 355042 AT4G17140.3 Carubv10006303m Thhalv10024176m Bra021067 Tp7g17050
3 473945 AT1G48090.1 Carubv10012395m Thhalv10011170m Bra014101 Tp1g35040
shell
awk '{a[$1]=a[$1]?a[$1]" "$3:$3}END{for (i in a) print i,a[i]}' file
1 Alyrata 489168
1 Athaliana AT5G23110.1
1 Crubella Carubv10000018m
1 Thalophila Thhalv10003499m
1 Brapa Bra013017
1 Tparvula Tp2g24010
2 Alyrata 355042
2 Athaliana AT4G17140.3
2 Crubella Carubv10006303m
2 Thalophila Thhalv10024176m
2 Brapa Bra021067
2 Tparvula Tp7g17050
3 Alyrata 473945
3 Athaliana AT1G48090.1
3 Crubella Carubv10012395m
3 Thalophila Thhalv10011170m
3 Brapa Bra014101
3 Tparvula Tp1g35040
如果第一列相同 则把第三列的合并为一行 最终结果为
1 489168 AT5G23110.1 Carubv10000018m Thhalv10003499m Bra013017 Tp2g24010
2 355042 AT4G17140.3 Carubv10006303m Thhalv10024176m Bra021067 Tp7g17050
3 473945 AT1G48090.1 Carubv10012395m Thhalv10011170m Bra014101 Tp1g35040
shell
awk '{a[$1]=a[$1]?a[$1]" "$3:$3}END{for (i in a) print i,a[i]}' file
相关文章推荐
- 使用shell 统计文本行数,输出两个文件不同或相同的行
- [awk] 一行命令处理文本的解析输出格式OFS
- 第一列相同就合并第三列到同一行
- 批处理实现两文本同行交替输出-shell
- 一行内文本超出指定宽度溢出的处理
- VB中删除、替换或者插入内容到文本中某一行,及文本行列的处理实例
- SHELL:awk,sed,常用文本处理命令
- shell脚本:一次读取文件的一行,并输出
- 一行内文本超出指定宽度溢出的处理
- Java读取处理文本文件并输出处理结果
- 在shell中使用echo命令输出带颜色的文本
- shell脚本:一次读取文件的一行,并输出
- Shell命令:echo介绍,echo如何输出带颜色的文本
- shell脚本:一次读取文件的一行,并输出
- CSS小结:一行内文本超出指定宽度溢出的处理-DivCSS教程
- shell脚本专家指南--单行文本处理awk
- shell语言处理多行合并一行问题
- 批处理读取文本中的每一行
- 在shell中使用echo命令输出带颜色的文本
- Linux 文本处理,两行合并为一行