2016-04-20 35 views
0

我想從第一個字符中排序數據文件的行(每行相互獨立)。舉例來說,如果我有一個數據文件用Linux排序數據文件的行

1 0.1  0.6  0.4 
2 0.5  0.2  0.3 
3 1.0  0.2  0.8 

我想的東西就這樣結束

1 0.6  0.4  0.1 
2 0.5  0.3  0.2 
3 1.0  0.8  0.2 

我曾嘗試使用排序命令來做到這一點,但它排序的列(不是線路)。轉移數據文件+ sort也可能是一個很好的解決方案(我不知道轉移數據文件的任何簡單方法)。

感謝您的幫助!

+0

http://stackoverflow.com/questions/25062169/using-bash-to-sort-data-horizo​​ntally也許? – FirebladeDan

回答

2

Perl來拯救!

perl -lawne ' 
    print join "\t", $F[0], sort { $b <=> $a } @F[1..$#F] 
' <input> output 
  • -n讀取由線輸入線
  • -a按空白進行分割行成@F陣列
  • -l添加新行到print

參見sortjoin

+0

如此有用和強大的命令。謝謝你的回答,它明確地解決了我的問題! – user3209698

1

還是要逐行讀取輸入線,使用trsort這樣的:

#! /bin/sh 
while read -r line; do 
    echo $line | tr ' ' '\n' | sort -k1,1nr -k2 | tr '\n' '\t' >> output 
    echo >> output 
done < input 

tr ' ' '\n'是行轉換爲列。