以下のファイルを次のように並べ替えようとしています。
col1(昇順)col2(降順)col3(昇順)col4(降順)
-k
構文ではなく、+-
コマンドを使用したい。古い構文の使用方法を理解しました。
sort -t " " +0 -1 +2 -3 +4r testfile
しかし、それはほとんど直感的ではありません。 -k
オプションを使用する正しい方法がわかりません。ありがとうございました。
テストファイルは次のとおりです。
5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3
結果:
1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6
次のいずれかが必要です。
sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
sort -k1,1 -k2,2r -k3,3 -k4,4r
次のトランスクリプトのように:
pax$ echo '5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3' | sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6
次のように、適切な数値(可変長)として処理する場合は、必ず-n
オプションを指定してください。
sort -n -k1,1 -k2,2r -k3,3 -k4,4r
sort -n -k 1n -k 2rn -k 3n -k 4rn
はどうですか?-k <FIELD><OPT1><OPT2>...
ここで、OPT1とOPt2は単にsort
オプションです。たとえば、n
は数値、r
は逆です。