在Linux上有没有一个unix oneliner或其他一些快速的方式来根据排序设置的排列文件对文件进行排序? 即:如何根据另一个文件对文件进行排序?
file1的:(由CRLFs分离,而不是空格)
2
3
7
4
file2的:
a
b
c
d
排序文件1:
2
3
4
7
所以这一块衬垫的结果应该是
整理文件2:
a
b
d
c
在Linux上有没有一个unix oneliner或其他一些快速的方式来根据排序设置的排列文件对文件进行排序? 即:如何根据另一个文件对文件进行排序?
file1的:(由CRLFs分离,而不是空格)
2
3
7
4
file2的:
a
b
c
d
排序文件1:
2
3
4
7
所以这一块衬垫的结果应该是
整理文件2:
a
b
d
c
paste file1 file2 | sort | cut -f2
下面是一个Perl的一个班轮,将打印文件2的基础上的排序输入的内容文件1。
perl -n -e 'BEGIN{our($x,$t,@a)=(0,1,)}if($t){$a[$.-1]=$_}else{$a[$.-1].=$_ unless($.>$x)};if(eof){$t=0;$x=$.;close ARGV};END{foreach(sort @a){($j,$l)=split(/\n/,$_,2);print qq($l)}}' file1 file2
注:如果文件的长度不同,输出将只打印到最短文件长度。
例如,如果文件A有5行,文件B有8行,那么输出只有5行。
感谢@ glenn-jackman为他的**非常酷** [粘贴](http://unixhelp.ed.ac.uk/CGI/man-cgi?paste“man paste”),[sort](http: //www.manpagez.com/man/1/sort/“man sort”)&[cut](http://unixhelp.ed.ac.uk/CGI/man-cgi?cut“man cut”)answer! – Melioratus 2012-02-10 05:34:20
脚本的输入是什么... file1,file2和sorted_file1?或者脚本应该对file1进行排序? – dgw 2012-02-03 17:14:53