如何组合2个csv文件+;所有内容+;cygwin/bash/awk/sed/paste

如何组合2个csv文件+;所有内容+;cygwin/bash/awk/sed/paste,bash,csv,awk,sed,merge,Bash,Csv,Awk,Sed,Merge,如何组合2个CSV文件(finle1.CSV和file2.CSV)?我已经探索了awk/sed/paste,但我无法理解 file1.csv Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s) 2014-06-04 11:00,ObjectA,100%,0.0316,0.0012 2014-06-04 21:00,ObjectB,100%,40.0332,7.2601 文件2.csv Tim

如何组合2个CSV文件(finle1.CSV和file2.CSV)?我已经探索了awk/sed/paste,但我无法理解

file1.csv

Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s)
2014-06-04 11:00,ObjectA,100%,0.0316,0.0012
2014-06-04 21:00,ObjectB,100%,40.0332,7.2601
文件2.csv

Time,Object,Integrity,KPI 1-C Name A unit(unit),KPI 1-D Name A unit(unit)
2014-06-04,ObjectA,100%,0.024,0.0014
2014-06-04,ObjectB,100%,60.6176,29.0913
whatIwant.csv

Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s),Time,Object,Integrity,KPI 1-C Name A unit(unit),KPI 1-D Name A unit(unit)
2014-06-04 11:00,ObjectA,100%,0.0316,0.0012,2014-06-04,ObjectA,100%,0.024,0.0014
2014-06-04 21:00,ObjectB,100%,40.0332,7.2601,2014-06-04,ObjectB,100%,60.6176,29.0913
注:我假设时间,对象将相应地排列

这将适用于N行

此外,每个文件中的列数可能会增加


我可能必须从
whatIwant.csv
中删除第二时间、对象、完整性列,但可以稍后执行此操作。

使用
awk

awk -F, 'NR==FNR{a[$2]=$0;next}$2 in a{ print a[$2],$4, $5 }' OFS=, file1.csv file2.csv
Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s),KPI 1-C Name A unit(unit),KPI 1-D Name A unit(unit)
2014-06-04 11:00,ObjectA,100%,0.0316,0.0012,0.024,0.0014
2014-06-04 21:00,ObjectB,100%,40.0332,7.2601,60.6176,29.0913
使用
连接

join -t, -j 2 -o 1.1 1.2 1.3 1.4 1.5 2.4 2.5 file1.csv file2.csv
Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s),KPI 1-C Name A unit(unit),KPI 1-D Name A unit(unit)
2014-06-04 11:00,ObjectA,100%,0.0316,0.0012,0.024,0.0014
2014-06-04 21:00,ObjectB,100%,40.0332,7.2601,60.6176,29.0913
更新:

要在日期和对象上联接,可以使用
awk
作为
join
仅在一列上联接

awk -F, 'NR==FNR{sub(/ .*/,"",$1);map[$1,$2]=$0;next}(($1,$2) in map){print map[$1,$2],$4,$5}' OFS=, f1 f2
Time,Object,Integrity,KPI 1-A Name A unit(unit/s),KPI 2-A Name B unit(unit/s),KPI 1-C Name A unit(unit),KPI 1-D Name A unit(unit)
2014-06-04,ObjectA,100%,0.0316,0.0012,0.024,0.0014
2014-06-04,ObjectB,100%,40.0332,7.2601,60.6176,29.0913

我建议你看看这里,这是一个关于你需要做什么的速成课程,你也可以使用
join
而不是
paste
来删除重复的字段。或者通过解析输出来删除它。非常感谢您的帮助,但是您能简单解释一下吗?由于我想将其应用于类似的数据,这些数据看起来更像是双引号之间的所有值
“时间”、“对象”、“完整性”、“KPI 1-A名称A单位(单位/秒)”、“KPI 2-A名称B单位(单位/秒)”
@HattrickNZ对于引用的CSV,我根本不推荐awk。使用适当的CSV解析器,如perl或ruby。