Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在不同列上对2个已排序文件进行交叉分类_Sorting_Awk_Merge - Fatal编程技术网

Sorting 在不同列上对2个已排序文件进行交叉分类

Sorting 在不同列上对2个已排序文件进行交叉分类,sorting,awk,merge,Sorting,Awk,Merge,我有两个(非常大)排序文件,如下所示: ==> date1 <== 1 A 2 A 5 A 7 A ==> date2 <== B 2 B 4 B 5 B 5 B 6 B 8 所以我需要根据两个不同的列合并两个文件,通过对两个文件的行进行分类 我尝试使用sort-m,但据我所知,我们无法为每个文件指定不同的列。 我也尝试使用awk和FNR==NR技巧,但文件太大,无法实现此目的。$cat f1 $ cat f1 1 A 2 A 5 A 7 A $ cat f2 B

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

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

==> date2 <==
B 2
B 4
B 5
B 5
B 6
B 8
所以我需要根据两个不同的列合并两个文件,通过对两个文件的行进行分类

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

$cat f1
$ 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
1A 2A 5 A 7 A $cat f2 B 2 B 4 B 5 B 5 B 6 B 8
$sort-nk1-k2 f1仅当我的行不包含“*”时此项工作,情况并非如此(我不知道我的行上有哪个字符,因此我假设所有字符都可以在行上,如果不清楚,很抱歉)@robertd:它适用于给定输入,同时创建post请发布与实际输入相同的数据,以便您和其他人(来这里帮忙的人)可以节省时间,同时你会得到你想要的
$ 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