【发布时间】:2018-06-25 14:19:01
【问题描述】:
我有 3 个 CSV 文件:
基础文件(用 0 初始化的值)
steve tignor ash michael jose sam joshua
0 0 0 0 0 0 0
文件 1:
tignor michael jose
888 9 -2
文件 2:
ash joshua
77 66
我需要的输出:
steve tignor ash michael jose sam joshua
File1 0 888 0 9 -2 0 0
File2 0 0 77 0 0 0 66
我尝试先用 awk 对文件进行排序,然后用 paste 合并,但由于我有 1000 多列和 30 个文件,所以它不起作用。
代码:
awk -F"," 'NR==1{
split($0,a,FS);asort(a);
for(i=1;i<=NF;i++)b[$i]=i
} {
for(i=1;i<=NF;i++)printf("%s,",$(b[a[i]]));
print x
}' File1 > 1.csv
awk -F"," 'NR==1{
split($0,a,FS);asort(a);
for(i=1;i<=NF;i++)b[$i]=i
} {
for(i=1;i<=NF;i++)printf("%s,",$(b[a[i]]));
print x
}' File2 > 2.csv
paste -d"\n" 1.csv 2.csv > merge.csv
在这里需要一些帮助。提前致谢。
【问题讨论】:
-
欢迎来到 SO,请将您的示例(代码)包装在 CODE TAGS 中,然后单击按钮
{}并告诉我们。 -
转换数据(或重新导出)以便于处理,
tigor,888。祝你好运。