uniqが先行文字は無視できますが、末尾の文字は無視できないのはなぜですか? [閉鎖]

uniqが先行文字は無視できますが、末尾の文字は無視できないのはなぜですか? [閉鎖]

これPOSIX関連のコマンドラインツールuniq「ファイルの重複行を報告またはフィルタリングする」ように設計されています。全行比較に関連するユースケースに加えて、部分行比較には2つのオプションがあります。

  • -f <number>最初の<number>フィールドを無視して
  • -s <number>最初の<number>文字を無視します(無視されたフィールドの後から始まります-f)。

uniq私が理解していないのは、無視を許可する機能が追加されていない理由です。最初のものを除く <number>フィールド。

一般的なAwkイディオムは次のとおりです。

awk '!a[$1]++'

以下を含む行のみを印刷します。初登場最初の分野の出現。

私の考えでは、これはの機能と非常によく似ていますuniq

もちろん、ツールが重なっても大丈夫です。しかし、-f並列機能を含まない歴史的またはUNIXの哲学ベースの理由はありますか?ただ最初の____フィールドを検討しますか?

答え1

私は歴史的またはUNIXの哲学ベースの理由(ある場合)がわからないが、数年前に誰かがcoreutilsその機能をuniq

rev | uniq -f | rev十分だと思う

関連情報