これはこの質問に対するフォローアップです。数値以外の値に対してsort -nは何をしますか?
これは私の入力です。
1-----***
R----****
1---*****
それから私は以下を実行しました。
sort -k 1.2,1.9n input.txt > output.txt
これは私の結果です。
1-----***
1---*****
R----****
私の予想結果:
1---*****
R----****
1-----***
*(42)のASCII値が-(45)の値より小さいため、この出力は予想されます。ただし、ソートでRを考慮しているようですが、1.2、1.9は排除しそうです。私は何が間違っていましたか?
答え1
使用中のソートキーが無効です(入力テキストと一致しないため無効です)。ソート情報マニュアルでは、この--debug
オプションを使用してキーマッチングの動作を調査することをお勧めします。 command キーを使用して1.2,1.9n
sort すると、次の出力が生成されます。
% sort -k 1.2,1.9n --debug input.txt
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
^ no match for key
_________
1---*****
^ no match for key
_________
R----****
^ no match for key
_________
フィールド全体のデフォルトのソートを使用することに置き換えられるようです。n
キーを省略して単に使用すると、1.2,1.9
次の結果が表示されます。
% sort -k 1.2,1.9 --debug input.txt
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
________
_________
R----****
________
_________
1---*****
________
_________
ソート操作には、最初のフィールドの2〜9番目の文字を正しく使用してください。