2015-08-31 68 views
1

我想要爲排序定製命令:'D','R' - >'I' - >'W','X'和'Z'。也就是說,'D'和'R'在'I'之前相等並且排序。 'W','X'和'Z'是相等的,並按'I'排序。在shell中自定義排序

輸入:

123D123 
234R111 
333I333 
111W111 
222X222 
111Z111 

的排序將是4號字,然後依次從5日至7日字符排序。

預期輸出將是:

234R111 
123D123 
333I333 
111W111 
111Z111 
222X222 
+2

請檢查我正確解釋字母排序。次要的排序對我來說沒有意義; 'W111'如何在'X222'之後排序?在我想到的任何合理的解釋下,X線應該在Z線和X線後的輸出中最後一個; Z線和X線的順序是不確定的。 –

+0

對不起,我的錯字。問題修改。 –

回答

1
paste <(cut -c 4-7 file | tr 'RWX' 'DZZ') <(cat file) | sort -k 1,1 | awk '{print $2}' 

234R111 
123D123 
333I333 
111W111 
111Z111 
222X222 

說明:創建一個鍵,其中R = d且W = X = Z,排序鍵,則丟棄該鍵