file1.csv
A,,C,D
A,,C,D
A,,C,D
A,,C,D
file2.csv
A,B
A,B
A,B
A,B
所需的Output.csv
A,B,C,D
A,B,C,D
A,B,C,D
A,B,C,D
我试过使用“ join”和“粘贴”无济于事。有bash命令可以执行此操作吗?两个.csv
文件中的“ A”列均相同。
awk
命令:awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
从file1中获取一行并将其存储到局部变量中f1
,然后打印存储在其中的行,f1
最后从file1中打印以逗号分隔的第三($3
)和第四($3
)字段,
,并更改OFS(输出字段分隔符[默认值])到逗号(,
)。
paste -d, file2 <(cut -d, -f3- file1)
A,B,C,D A,B,C,D A,B,C,D A,B,C,D
粘贴file2,然后将第三列剪切并粘贴到-f3-
file1中的next()。
awk
和paste
(选项A)下面的命令还会C,D
在file2的每一行末尾复制file1的最后两列():
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
上面的命令粘贴file2的内容,然后打印一个逗号delimiter(-d','
),然后在文件1重新定义后,从file1粘贴两个last字段(NF
是last字段的索引,$NF
是它的索引是的字符串。lastfield之前的第二个字段也是)NF
。$(NF-1)
或使用逗号分隔符(-F','
)分割。
awk
和paste
(选项B)此命令也与上面的命令相同($3
并$4
指向file1的每一行的第三和第四字段):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
cut
命令的解决方案:paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
切口在上述命令的命令第一切割第一场(-f1
其与逗号分隔符(索引-d.
从文件1()) cut -d, -f1 file1
),那么剪切和粘贴文件2(第二场cut -d, -f2 file2
),最后剪切和粘贴第三列(-f3
)到的nextS( -
)cut -d, -f3- file1
再次从file1()。
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
从file1(awk -F',' '{print $1}' file1
)粘贴第二个字段,然后打印一个逗号(-d,
),然后从file2(awk -F',' '{print $2}' file2
)粘贴第二列,最后再次粘贴file1(awk -F',' '{print $3","$4}' file1
)的第二列和最后一列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句