ソートされたデータを含むファイルがあり、別のキーのデータ順序を破壊することなく、1つのキーの値に基づいてファイルを並べ替えたいと思います。
GNUソートが私が指定しなかったキー値に基づいて行ソートを実行するのを防ぐにはどうすればよいですか?または、ソート時にGNUソートがキー範囲を無視するように指定するにはどうすればよいですか?
ファイルデータ.txt:
1 Don't
2 C
1 Sort
2 B
1 Me
2 A
予想出力:
1 Don't
1 Sort
1 Me
2 C
2 B
2 A
注文する:
sort -k 1,1 <data.txt
結果:私が要求した不要なソートはありません。
1 Don't
1 Me
1 Sort
2 A
2 B
2 C
ベストアンサー1
あなたが必要です安定したソート。からman sort
:
-s, --stable
stabilize sort by disabling last-resort comparison
今すぐ:
$ sort -sk 1,1 <data.txt
1 Don't
1 Sort
1 Me
2 C
2 B
2 A
キーが数値の場合、-n
またはが必要になる場合--numeric-sort
があります(たとえば、デフォルトの語彙ソート順序を使用して10と2を比較すると、予期しない結果が発生する可能性があります)。この場合は、次のようにします。
sort -sn <data.txt
行全体の数値解析は最初のフィールドの数値解析と同じであるため、最初のフィールドを抽出する必要はありません。