CSV:连接更多行数据

mar*_*ced 3 command-line csv text-processing

我有这个file1.csv

A,dog cat horse cow
B,goat deer fish
A,deer goat 
C,dog cat 
C,goat
Run Code Online (Sandbox Code Playgroud)

我需要合并加入类似的行(例如 A 和 C):

A,dog cat horse cow deer goat 
B,goat deer fish
C,dog cat goat
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 5

awk

$ awk -F, '{a[$1] = a[$1]=="" ? $2 : a[$1] OFS $2} END {for (i in a) printf("%s,%s\n", i, a[i])}' file.csv
A,dog cat horse cow deer goat
B,goat deer fish
C,dog cat  goat
Run Code Online (Sandbox Code Playgroud)

使用 GNU datamash+ sed

$ datamash -st, groupby 1 collapse 2 < file.csv | sed 's/,/ /2g'
A,dog cat horse cow deer goat
B,goat deer fish
C,dog cat  goat
Run Code Online (Sandbox Code Playgroud)

请注意,awk 版本不保证输出顺序:如果您有 GNU awk >= 4.0,您可以使用PROCINFO结构来控制它。