在一个逗号隔开行转列有条件 [英] Transpose Columns in a single comma separated row conditionally
本文介绍了在一个逗号隔开行转列有条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个看起来像这样的输入文件:
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屋!
查看全文