🐧 Linux 総合学習プラットフォーム
基本操作・コマンド ・ 入門

文字を整えるフィルタ:sort・uniq・cut・tr・wc

テキストを受け取り、加工して吐き出す小さな道具たち。並べ替える sort、重複を畳む uniq、列を抜く cut、文字を置換する tr、数を数える wc。パイプでつなげば、生のログを一発で読める形に変えられる。

grep で「必要な行だけ」を絞り込めるようになった。次の欲は「その中身を、読める形に整えたい」だ。並べ替えたい、重複を消したい、特定の列だけ見たい——それを担うのがフィルタと呼ばれる小さな道具群だ。フィルタは標準入力からテキストを受け取り、加工して標準出力に流す。だからパイプ | でいくらでも数珠つなぎにできる。

🔗
たとえ工場のベルトコンベア。sort の機械が並べ替え、次の uniq の機械が重複を弾き、cut の機械が要る列だけ切り出す。各機械は単機能だが、並べれば立派な加工ラインになる。

🔤 並べ替えと重複:sort と uniq

sort は行を並べ替える。そのまま使えば文字コード順、-n を付ければ数値順、-r で逆順、-k で「何列目を基準にするか」も指定できる。uniq は連続する重複行を1つにまとめるが、隣り合った行しか比べないのが要注意だ。散らばった重複を消したいときは、先に sort で寄せてから uniq に渡すのが定石になる。

ls -l /etc | cut -b 1-10 | sort | uniq とすると、パーミッション表記だけを取り出し、並べ替えて重複を畳み、「どんな種類の許可設定が使われているか」の一覧が得られる。

✂️ 列を抜き、文字を置換する:cut と tr

cut は行を列に切り分けて必要な部分だけ抜く。-f で列番号、-d で区切り文字を指定する(既定はタブ)。cut -f 1,3 -d ' ' なら空白区切りの1列目と3列目が取れる。tr は文字を1対1で置き換え、tr a-z A-Z で大文字化、-d で削除、-s で連続の圧縮ができる。空白がバラバラなデータを tr -s ' ' で整えてから cut に渡す下ごしらえによく使う。

💡
ポイントwc は数を数える道具。-l で行数、-w で単語数、-c で文字数。ls /etc | wc -l とすれば「/etc の項目数」が一発で分かる。
コツフィルタは単体で覚えるより「sort→uniq→cut」のように連結の型で覚えると実戦で効く。まず1つ通し、出力を見て次を足す、と一段ずつ組み上げよう。

この項目に出てくる用語

フィルタふぃるた
標準入力を受け取り、加工して標準出力に流す小さなコマンド。
フィールド(列)ふぃーるど
1行を区切り文字で分けたときの、それぞれの列。

関連コマンド

sortuniqcuttrwc

▶ 学習アプリでこの続きを学ぶ・演習する