现在我有一堆行,其中包含来自不同来源的数据。列 A 包含源文件的名称,其余列是从这些源中提取的值的分类。
我想做的是将这些行与相同的源文件合并。
现在:
源 1 、值 1、值2、值 3
源 1 、值 4、值 5
源 2 、值1、值 2
源 2 、值 3、值 4
我需要它看起来像什么
源 1 、值 1、值 2、值 3、值4、值 5
源 2、值1、值 2、值 3、值 4
我对如何做到这一点很灵活。 如果它更容易导出为 CSV 并使用它 在 bash 中而不是在 excel 中执行此操作 我可以这样做
我认为这几乎可以做到尴尬,但我必须喂孩子们:-):
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[] 是否未定义(即 length=0),如果未定义,我将字段 1 存储在那里(即源)。然后,我将行中的所有剩余字段连接到我存储的字符串上。最后,我打印出 d[] 中的所有字符串。