2017-08-29 71 views
0

我有如下的CSV文件,我需要比较第2列并在第n行插入数据。如果在CSV的第n列中模式不匹配,awk插入第n行

CSV:

11-AUG-17,2,85,18120.4 
11-AUG-17,4,112,2920 
11-AUG-17,5,23,4181.92 
11-AUG-17,6,284,74767.86 

输入:

11-AUG-17,3,0,0 
11-AUG-17,8,0,0 

欲望输出:

11-AUG-17,2,85,18120.4 
11-AUG-17,4,112,2920 
11-AUG-17,5,23,4181.92 
11-AUG-17,8,0,0 
11-AUG-17,6,284,74767.86 
11-AUG-17,3,0,0 

我曾尝试下面awk命令,但它是在所有字段中插入如下

awk -F"," 'OFS="," $2!=3{print $1,3,0,0}1;$2!=8{print $1,12,0,0};' result1.csv >result2.csv 

输出上述命令的:

11-AUG-17,2,85,18120.4 
11-AUG-17,3,0,0 
11-AUG-17,8,0,0 
11-AUG-17,4,112,2920 
11-AUG-17,3,0,0 
11-AUG-17,8,0,0 
11-AUG-17,5,23,4181.92 
11-AUG-17,3,0,0 
11-AUG-17,8,0,0 
11-AUG-17,6,284,74767.86 
11-AUG-17,3,0,0 
11-AUG-17,8,0,0 

预先感谢支持

+0

什么是该命令的逻辑:'2,4,5,8,如图6所示,3'?问题不明确 – RomanPerekhrest

+0

无需维护订单/序列。只需在CSV的任意行插入 –

+0

您列出了输入CSV和输入。我假设你只是想有一个输入。哪一个是真正的投入? – piojo

回答

0

现在,根据你的话“无需维护订单/序列。只是插入,需要在任何行CSV”,简单cat命令就足够了:

cat input.csv >> first.csv 

first.csv最终内容:

11-AUG-17,2,85,18120.4 
11-AUG-17,4,112,2920 
11-AUG-17,5,23,4181.92 
11-AUG-17,6,284,74767.86 
11-AUG-17,3,0,0 
11-AUG-17,8,0,0 
+0

我的要求是比较第二列和静态值,如果模式不行则只需插入。 –