在不同的列上对2个已排序的文件进行Interclassing

时间:2017-02-20 10:43:30

标签: sorting awk merge

我有2个(非常巨大的)排序文件,如下所示:

==> date1 <==
1 A
2 A
5 A
7 A

==> date2 <==
B 2
B 4
B 5
B 5
B 6
B 8

我需要以下输出:

1 A
2 A
B 2
B 4
5 A
B 5
B 5
B 6
7 A
B 8

所以我需要根据2个不同的列合并2个文件,通过对2个文件中的行进行分类。

我尝试使用sort -m,但据我所知,我们无法为每个文件指定不同的列。
我也尝试使用awk和FNR == NR技巧,但文件太大了。

1 个答案:

答案 0 :(得分:1)

$ cat f1
1 A
2 A
5 A
7 A

$ cat f2
B 2
B 4
B 5
B 5
B 6
B 8

$ sort -nk1 -k2 f1 <(awk '{print $2,$1,"*"}' f2) | awk '/*/{print $2,$1; next}1' 
1 A
2 A
B 2
B 4
5 A
B 5
B 5
B 6
7 A
B 8