uniq (重複なし)
100%

テキスト操作 · レッスン 14

uniq (重複なし)

uniq を使い、隣接する同一行のグループをまとめ、数え、絞り込む方法を学びます。

uniq コマンドは各入力行を直前の行と比較します。隣接する同一行のグループをまとめ、数え、選択できますが、ファイル全体に散らばった重複は検索しません。

隣接する重複行をまとめる

reading.txt にグループ化された値があるとします。

book
book
paper
paper
article
article
magazine

絞り込みオプションなしの uniq は、各隣接グループから代表 1 行を表示します。

$ uniq reading.txt
book
paper
article
magazine

結果は stdout へ送られるため、入力ファイルは変わりません。

uniq reading.txt は標準で何をしますか?

隣接グループを数える

-c は、各出力グループの前に連続する入力行数を付けます。

$ uniq -c reading.txt
      2 book
      2 paper
      2 article
      1 magazine

同じ行をあらかじめ隣接させていなければ、これは全体の合計ではなく連続長です。

uniq -c の数値は何を表しますか?

一意または重複したグループを選ぶ

-u は 1 行だけのグループ、-d は 2 行以上の各隣接グループから代表 1 行を表示します。

$ uniq -u reading.txt
magazine
$ uniq -d reading.txt
book
paper
article

GNU uniq -D は重複グループ内の全行を表示しますが、小文字の -d はグループごとに値を 1 回だけ表示します。

ちょうど 1 回だけ現れる隣接グループだけを表示するコマンドはどれですか?

複数回現れる各隣接グループにつき 1 行を表示するコマンドはどれですか?

離れた重複をグループ化する

同一行が離れていると別のグループになります。

book
paper
book
paper
article
magazine
article

隣が異なるため、uniq は何もまとめません。

$ uniq reading.txt
book
paper
book
paper
article
magazine
article

順序を変えてよい場合は、先に並べ替えて同じ完全な行を隣接させます。

$ sort reading.txt | uniq
article
book
magazine
paper

両段階で一貫したロケールと比較方針を使います。sort -u reading.txt なら、1 コマンドで並べ替え、等しいキーごとに 1 行を残せます。

同じ行が reading.txt 内に散らばり、出力順を変えてもよい場合、完全な各行を 1 つずつ並べて出力するパイプラインはどれですか?

入力ファイルがなければ uniq は stdin を読むため、sort の後で自然に使えます。GNU の -i は大文字小文字を無視し、-f-s-w は比較領域を飛ばしたり制限したりできます。行の一部で同一性を定義するときだけ使います。

レッスン完了

uniq (重複なし) を完了しました

uniq で隣接する同一行のグループを分析できるようになりました。

  • 隣接する各重複グループを 1 行へまとめる。

  • -c で連続する出現数を数える。

  • -u で単独グループを選ぶ。

  • -d または GNU -D で重複グループを選ぶ。

  • 離れた重複をまとめる必要がある場合は先に並べ替える。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
テキスト操作 に戻る