sort --unique -k は元の順序で重複エントリを削除しますか?

sort --unique -k は元の順序で重複エントリを削除しますか?

私はリンクされたインデックスファイルのセットに対して一意のソートを行っています。ここで、最初の列は時々各インデックス間で変更され、2番目の列はキー値(実際には16進アドレス)になります。各indexNファイルの反復は、前のファイル以降に変更されたアドレスを記録します。アドレス0xaa11がインデックス3に存在する場合は、マージ+アライメント出力でインデックス1とインデックス2の0xaa11アドレス参照を置き換える必要があります。

問題は、このタイプのマージができるかどうかです。安定して各ソースインデックスを特定の順序でパイプすることで、sortGNUなどのツールを使用できますか?sort -u

たとえば、パイプラインは最新のエントリから古いエントリの順にインデックス付けされます。

cat index3 index2 index1 | sort -u -k 2,2

これをテストしたとき、index2とindex1にも表示されるアドレスを含むindex3の行を維持し、同時にindex2とindex1から重複参照を削除するように見えました。

しかし、そうでしょうか?いつもそうですか?マニュアルsortページはこれについてあいまいです。

-u --unique   output only the first of an equal run

私は、一致するキーを持つ行が常にソースファイルがリンクされた順序(つまり、ソースストリームに表示される順序)でソートされるかどうかを予測するGNUソートアルゴリズムについて十分にはわかりません。しかし、ソートアルゴリズムが常に線形で動作するわけではないことを知っています。そのため、ドキュメントが暗示していることの説明を探しています。

ベストアンサー1

sortスイッチを使用して明示的に要求しない限り、行の順序は目的に応じて同じであることは保証されません-s--stable安定したソートアルゴリズムは、同じアイテムの元の順序を変更しないアルゴリズムです。演算。

しかし、情報ページ「デフォルトの最後の手段比較も無効になっています」というメッセージが表示されるので-u、はい、大丈夫でしょう。しかし、マンページではまったく明確ではありません。

おすすめ記事