【ダブリューシー】

wc とは?

最終更新:
💡 行・単語・バイトを数え、文字数は別に選ぶ

ファイルや標準入力の改行数・単語数・バイト数などを数えるLinux/Unixコマンド。既定の出力は行数としての改行数、単語数、バイト数の順。文字数は-mで選び、単語の区切りや文字の扱いはロケールにもよる。

📌 このページのポイント
同じ入力を、項目ごとに数えるreport.txtHello WorldThis is a testfile for wccommand demo各行末:LF改行wc report.txt4 11 52改行・単語・バイト別の入力例:日本語 + LF改行UTF-8:-c は10バイトUTF-8ロケール:-m は4文字-w は1(空白等の区切りで数える)-l は改行を数える。折り返し行数ではない
上はASCII文字と各行末のLFを持つ実際の入力で、4改行・11単語・52バイト。下は日本語3文字とLFの別入力で、UTF-8ロケールで10バイト・4文字になる。表示上の空白幅やファイル名の表示は省略。
ひよこ ひよこ
wcって何を数えてくれるの?
ペンギン先生 ペンギン先生
引数で指定したファイルを読み、既定では改行数・単語数・バイト数を表示するよ。図のreport.txtのように末尾まで改行がある例なら、wc report.txtの結果は4 11 52になる。表示の空白の幅は固定だと思わず、数値の順番を見るんだ。
ひよこ ひよこ
行数だけ知りたいときはどうするの?
ペンギン先生 ペンギン先生
wc -l ファイル名を使うよ。正確には改行文字の数なので、最後に改行のない部分は数えない。たとえば改行なしのhelloだけなら0。画面で折り返して何行に見えるかを数えるコマンドではないんだ。
ひよこ ひよこ
日本語の単語数や文字数も分かる?
ペンギン先生 ペンギン先生
-wは空白などで区切られたまとまりを数え、自然言語の単語へ分割する解析ではないよ。-cはバイト数、-mはロケールに従う文字数。UTF-8の日本語とLF改行の例は、10バイトでも4文字になる。日本語は全て一文字3バイト、という規則ではないんだ。
ひよこ ひよこ
パイプと組み合わせるとどう使えるの?
ペンギン先生 ペンギン先生
引数なしなら標準入力を読むので、grep ERROR log.txt | wc -lで一致した出力の行数を数えられるよ。一行にERRORが何回もあっても、その行だけなら1。出力行数とエラーの発生件数は同じとは限らないんだ。
ひよこ ひよこ
ls | wc -lなら、ファイル数が分かる?
ペンギン先生 ペンギン先生
lsが出力した改行数を数える例だよ。ただし名前に改行がある場合や、隠し項目・ディレクトリの扱いでは、数えたいファイル数とずれる。複数ファイルをwcへ渡せば既定で合計も出るけれど、空白を含む名前の渡し方や、何を数えるかも確認するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「wc」って出てきたら「入力の改行・単語・バイトなどを数えるコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「word count」 = 単語数を数える
💬 word countの略。単語だけでなく改行やバイトも数えられるよ。何を数えるかはオプションで選ぶんだ。

参考資料

← 用語集にもどる