在一个逗号隔开行转列有条件 [英] Transpose Columns in a single comma separated row conditionally

查看:150
本文介绍了在一个逗号隔开行转列有条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个看起来像这样的输入文件:

I have an input file that looks like this:

aaa 111    
aaa 222
aaa 333
bbb 444
bbb 555

我要创建一个看起来像这样的转输出文件:

I want to create a transposed output file that looks like this:

aaa 111,222,333
bbb 444,555

我怎么可以这样做使用 AWK SED ,等?

推荐答案

使用的一种方法 AWK

$ awk '{a[$1]=a[$1]?a[$1]","$2:$2}END{for(k in a)print k,a[k]}' file
aaa 111,222,333
bbb 444,555

如果你的落实 AWK 不支持三元运算符,则:

And if your implementation of awk doesn't support the ternary operator then:

$ awk 'a[$1]{a[$1]=a[$1]","$2;next}{a[$1]=$2}END{for(k in a)print k,a[k]}' file 
aaa 111,222,333
bbb 444,555


您的新文件,不会造成对剧本有任何问题,你得到什么输出?我怀疑这可能是问题的终结线。运行 DOS2UNIX的文件来修复结束就行了。

$ cat file
APM00065101435 189
APM00065101435 190
APM00065101435 191
APM00065101435 390
190104555 00C7
190104555 00D1
190104555 00E1
190104555 0454
190104555 0462

$ awk '{a[$1]=a[$1]?a[$1]","$2:$2}END{for(k in a)print k,a[k]}' file
APM00065101435 189,190,191,390
190104555 00C7,00D1,00E1,0454,0462

这篇关于在一个逗号隔开行转列有条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆