我有三个文件如下:
FILE1.TXT
Add,abc,5
Add,xyz,10
Del,test,14
FILE2.TXT
abc,123,567
abc,123,568
xyz,234,879
xyz,234,880
test,435,227
test,435,228
File3.txt
23
28
30
40
50
36
最终所需的输出应如下所示:
abc,123,567,23
abc,123,568,28,Add,abc,5
xyz,234,879,30
xyz,234,880,40,Add,xyz,10
test,435,227,50
test,435,228,36,Del,test,14
最终输出应该在比较时合并(abc,xyz,test)。 我尝试使用"粘贴-d"来合并上面的文件。命令。
答案 0 :(得分:0)
尝试:
$ paste -d "" <(paste -d, File2.txt File3.txt) <(sed 's/^/\n,/' File1.txt )
abc,123,567,23
abc,123,568,28,Add,abc,5
xyz,234,879,30
xyz,234,880,40,Add,xyz,10
test,435,227,50
test,435,228,36,Del,test,14
第一步是你需要将File2.txt与File3.txt结合使用:
$ paste -d, File2.txt File3.txt
abc,123,567,23
abc,123,568,28
xyz,234,879,30
xyz,234,880,40
test,435,227,50
test,435,228,36
其次,我们需要像这样填充空间File1.txt:
$ sed 's/^/\n,/' File1.txt
,Add,abc,5
,Add,xyz,10
,Del,test,14
最后,我们需要将上述两者与另一个粘贴命令结合使用:
$ paste -d "" <(paste -d, File2.txt File3.txt) <(sed 's/^/\n,/' File1.txt)
abc,123,567,23
abc,123,568,28,Add,abc,5
xyz,234,879,30
xyz,234,880,40,Add,xyz,10
test,435,227,50
test,435,228,36,Del,test,14
paste
期望参数文件。我们有命令。构造<(...)
将paste -d, File2.txt File3.txt
之类的命令输出转换为paste
可以使用的类文件对象。 <(...)
称为流程替换。
我们可以使用临时文件做同样的事情:
$ paste -d, File2.txt File3.txt >tmp1; sed 's/^/\n,/' File1.txt >tmp2; paste -d "" tmp1 tmp2
abc,123,567,23
abc,123,568,28,Add,abc,5
xyz,234,879,30
xyz,234,880,40,Add,xyz,10
test,435,227,50
test,435,228,36,Del,test,14
进程替换消除了对临时文件的需求。