Linux 如何根据另一个文件对文件进行排序?

Linux 如何根据另一个文件对文件进行排序?,linux,perl,shell,Linux,Perl,Shell,linux上是否有unix oneliner或其他快速方法根据另一个文件排序所设置的排列对文件进行排序? i、 e: 文件1:(由CRLF分隔,而不是空格) 文件2: a b c d 2 3 4 7 a b d c 已排序的文件1: a b c d 2 3 4 7 a b d c 因此,这一班轮的结果应该是 已排序的文件2: a b c d 2 3 4 7 a b d c 下面是一个perl one liner,它将根据file1的排序输入打印file2的内容 perl-n-e

linux上是否有unix oneliner或其他快速方法根据另一个文件排序所设置的排列对文件进行排序? i、 e:

文件1:(由CRLF分隔,而不是空格)

文件2:

a
b
c
d
2
3
4
7
a
b
d
c
已排序的文件1:

a
b
c
d
2
3
4
7
a
b
d
c
因此,这一班轮的结果应该是

已排序的文件2:

a
b
c
d
2
3
4
7
a
b
d
c

下面是一个perl one liner,它将根据file1的排序输入打印file2的内容

perl-n-e'BEGIN{our($x,$t,@a)=(0,1,)}if($t){$a[$.-1]=$\}else{$a[$.-1].=$\\除非($.>$x)};如果(eof){$t=0;$x=$;关闭ARGV};结束{foreach(sort@a){($j,$l)=拆分(/\n/,$\u,2);打印qq($l)}}'文件1文件2

注意:如果文件长度不同,输出将只打印到最短的文件长度


例如,如果文件A有5行,文件B有8行,那么输出将只有5行。

脚本的输入是什么。。。文件1、文件2和已排序的文件1?或者脚本应该对文件1进行排序?感谢@glenn jackman的非常酷的回答!