我想比较三个文件的第一列。如果匹配,我想将输出打印为file2的第4列和fil3的第2列的第5列。如果没有匹配0将被添加到输出的第4和第5列。
file1.txt
123,apple,goodquality
456,orange,mediumquality
678,grape,lowquality
786,kiwi,goodquality
file2.txt
123,55
678,2
file3.txt
456,10
output.txt
123,apple,goodquality,55,0
456,orange,mediumquality,0,10
678,grape,lowquality,2,0
我正在使用join命令,如果所有3个文件中都可以使用column1值,那么它可以正常工作。
答案 0 :(得分:0)
您需要加入前2个文件,然后将该输出与第3个文件相连接。您需要几个额外的连接选项才能进行外连接,默认字段值为0。假设您的文件已经按第一个字段按字典顺序排序,那么:
join -t , -a 1 -a 2 -e 0 -o 0,1.2,2.1 file1.txt file2.txt |
join -t , -a 1 -a 2 -e 0 -o 0,1.2,1.3,2.1 - file3.txt
输出
123,apple,123,0
456,orange,0,456
678,grape,678,0
786,kiwi,0,0
如果你想排除最后一行有2个零值,那么
join -t, -a 1 -a 2 -e 0 -o 0,1.2,2.1 file1.txt file2.txt |
join -t, -a 1 -a 2 -e 0 -o 0,1.2,1.3,2.1 - file3.txt |
sed '/,0,0$/d'