Shell - 在Column1中连接行如果第2列具有重复项

时间:2018-02-08 05:54:46

标签: shell awk

我是shell编程的新手,目前面临解决方案的障碍,

如果列B相同,我想连接列A值。

以下是示例输入

Col A     Col B
AAA      www.google.com
BBB      www.google.com
CCC      www.gmail.com 
DDD      www.yahoo.com

预期产出

Col A     Col B 
AAA,BBB  www.google.com
CCC      www.gmail.com
DDD      www.yahoo.com

我使用下面的Awk命令来隔离重复的条目,

awk 'NR == 1 {p=$2; next} p == $2 { printf "%s,%s\n",$1,$2} {p=$2}' FS="," Input.csv

但我无法将重复项隔离开来。

任何建议或指示都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

如果您不担心输出的顺序(就像它应该与显示的Input_file相同),那么以下内容可能对您有帮助。

awk 'FNR==1{print;next} {a[$2]=a[$2]?a[$2] "," $1:$1}  END{for(i in a){print a[i],i}}'  OFS="\t"   Input_file

输出如下:

Col A     Col B
CCC     www.gmail.com
DDD     www.yahoo.com
AAA,BBB www.google.com