现在我有一堆行来自不同来源的数据。 A列包含源文件的名称,其余列是从这些源中提取的各种值。
我想要做的是将行与相同的源文件合并。
目前:
Source1,value1,value2,value3
Source1,value4,value 5
Source2,值1,值2
Source2,value 3,value 4
我需要它看起来像
Source1,value1,value2,value3,value4,value5
Source2,value1,value2,value3,value4
我对如何做到这一点非常灵活。如果它更容易导出到csv并使用它在bash而不是在excel中我可以这样做
答案 0 :(得分:0)
我认为这只是在awk中,但我必须喂孩子: - ):
awk -F, '{if(!length(d[$1]))d[$1]=$1;for(i=2;i<=NF;i++)d[$1]=d[$1]","$i}END{for(i in d)print d[i]}' yourfile.csv
输出:
Source1 , value1, value2, value3, value4, value 5
Source2 , value 1, value 2, value 3, value 4
输出行将存储在数组d []中。当读取每一行时,我检查线上第一个字段索引的数组元素d []是否未定义(即长度= 0),如果未定义,则将字段1存储在那里(即源)。然后我将该行中的所有剩余字段连接到我存储的字符串上。最后,我打印出d []中的所有字符串。