我有两个看起来像这样的文件:
文件1
a b 1 1
b d 2 3
file2的
a 10 11
b 20 21
d 30 31
我想加入他们以获得以下输出,这是第一个文件,其中包含前两个字段在file2中编写的内容:
a b 1 1 10 11 20 21
b d 2 3 20 21 30 31
我尝试使用join,但我无法根据file1的前两个字段设置加入文件。
答案 0 :(得分:3)
由于你想连接两行,你需要连接两次,将第一行的stdout连接到第二行的stdin:
join -11 -21 file1 file2 | join -12 -21 - file2
编辑:啊拍,反转前两个字段的顺序,是吗?
b a 1 1 10 11 20 21
d b 2 3 20 21 30 31
编辑2:这可能会更好 - 如果你颠倒了连接的顺序,你将得到正确顺序的前两列,但是交换的列将被交换:
join -12 -21 file1 file2 | join -12 -21 - file2
收率:
a b 1 1 20 21 10 11
b d 2 3 30 31 20 21
嘿好吧我认为我们得到了它 - 根据Michael Vehrs的建议编辑3:
join -11 -21 file1 file2 | join -o "1.1 1.2 1.3 1.4 1.5 1.6 2.2 2.3" -12 -21 - file2
收率:
a b 1 1 10 11 20 21
b d 2 3 20 21 30 31