sort -u(unique) は複数のキーには機能しますが、単一のキーには機能しません。

sort -u(unique) は複数のキーには機能しますが、単一のキーには機能しません。

GNUソートを使用してください。繰り返しキーに基づいて行セットの最初の行だけを印刷したいと思います。

-k1,2期待どおりに動作します。ソートされた最初の行のみが出力されます。

printf %s\\n 'a a c' 'a a b' 'a a a' | sort -u -k1,2 -t' '
# a a a

-k1するいいえ期待どおりに動作します。ソートされた3行すべてが出力されます。

printf %s\\n 'a a c' 'a a b' 'a a a' | sort -u -k1 -t' '
# a a a
# a a b
# a a c

のすべてのバリアントについて、これは正常ですかsort、それともGNUタイプに固有のものですか?現れやすくなると思います。「予想できない結果」man sort図に示すように、2番目のキー番号は任意に選択できる:-k, --key=POS1[,POS2]

-k1,1は適用されますが、-u通常のソート(例:no -u)はのみ適用されます-k1

答え1

私はこれが次のPOSIXの基本的な動作だと思います。マニュアルページ:

-k フィールド開始[タイプ][,フィールド終了[タイプ]]

キーフィールドは、field_startで始まりfield_endで終わるように定義する必要があります。ただし、field_startが行末を超えて拡張されたり、field_end以降に拡張されない限り、この場合キーフィールドは空です。欠落している field_end は行の最後の文字を示します。

関連情報