Infile1:
1 a 3 c 4 d 6 f
Infile2:
1 a 2 b 5 e 6 f 7 g 8 h
我如何使用unix join命令加入这些文件以获取以下输出:
1 aa 2 b 3 c 4 d 5 e 6 ff 7 g 8 h
Dogbanes答案有效,但是…当我在此文件上应用Dogbanes答案时:
27 27 28 22 29 37 30 15 31 21 32 13 33 18 34 24
和这个:
27 7 28 13 29 6 30 12 31 30 32 5 33 10 34 28
他们不加入:
27 27 27 7 28 13 28 22 29 37 29 6 30 12 30 15 31 21 31 30 32 13 32 5 33 10 33 18 34 24 34 28
第二种情况是制表符分隔的,所以我用 -t \t
-t \t
首先sort两个文件。然后使用join联接两个文件的第一个字段。sed如果要删除空间并转换a a为,则还需要通过管道传递输出aa。如下所示:
sort
join
sed
a a
aa
$ join -t " " -1 1 -2 1 -a 1 -a 2 <(sort file1) <(sort file2) | sed 's/ \([a-z]\) / \1/g' 1 aa 2 b 3 c 4 d 5 e 6 ff 7 g 8 h