在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