連載
» 2016年11月07日 05時00分 UPDATE

Linux基本コマンドTips(62):【 wc 】コマンド――テキストファイルの文字数や行数を数える

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、「wc」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストファイルの文字数や行数を数えるための「wc」コマンドです。

wcコマンドとは?

 「wc」はテキストファイルの行数や単語数(word count)、文字数を数えるコマンドです。単語は、空白や改行文字で区切られたものを数えます。


wcコマンドの書式

wc [オプション] [ファイル……]

※[ ]は省略可能な引数を示しています




wcコマンドの主なオプション

 wcコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-c --bytes バイト数を表示する
-m --chars 文字数を表示する(マルチバイト文字に対応)
-l --lines 改行の数を表示する
-w --words 単語数を表示する
-L --max-line-length 最も長い行の長さを表示する
--files0-from=リスト NULL文字で区切られたファイル名のリストを指定する(「--files0-from=- 」とした場合は、ファイル名を標準入力から読み込む)


行数と単語数とバイト数を数える

 「wc テキストファイル名」で、指定したテキストファイルの行数、単語数、バイト数が表示されます。複数のファイルを指定(ワイルドカード「*」も使用可)した場合は、各ファイルの結果と合計が表示されます。

 なお、「単語数」は、空白または改行で区切られている前提でカウントされます。

コマンド実行例

wc テキストファイル名

(指定したテキストファイルの行数、単語数、バイト数を表示する)(画面1の赤枠部分

wc *.txt

(「*.txt」ファイルの行数、単語数、バイト数および合計を表示する)(画面1の青枠部分


画面1 画面1 指定したテキストファイルの行数、単語数、バイト数を表示(赤枠部分)。複数のファイルを指定した場合はその合計が表示される(青枠部分)


文字数を数える

 バイト数ではなく、文字数を数えたい場合は「-m」オプションを使用します。さらに、行数も一緒に表示したい場合は「-l」オプション、単語数も表示したい場合は「-w」を同時に指定します。

 なお、オプションの指定順に関わらず、行数/単語数/文字数/バイト数の順番で表示されます。

コマンド実行例

wc -m ファイル名

(指定したファイルの文字数を表示する)(画面2の赤枠部分

wc -l -m ファイル名

(指定したファイルの行数と文字数を表示する)(画面2の青枠部分


画面2 画面2 指定したファイルの文字数を表示する場合は「-m」オプションのみ指定し(赤枠部分)、行数と文字数を表示する場合は「-l」オプションと「-m」オプションを同時に指定する(青枠部分)

【筆者注】筆者が試した限り、CentOS 7環境の「wc 8.22」では、シフトJISのファイルの文字数を正しくカウントできていませんでした。「nkf」コマンドや「iconv」コマンドなどでUTF-8に変換してからカウントすることをお勧めします。





行数だけを表示する

 行数だけをカウントしたい場合は、「-l」オプションを使用します。

 例えば、「find」コマンドは見つけたファイルを「1件1行」で出力するので、行数を数えることでファイルの個数を知ることができます。

コマンド実行例

find . -name "*.txt" | wc -l

(findコマンドで出力された行数を数える)(画面3


画面3 画面3 findコマンドと組み合わせて、ファイルの個数を知る


findコマンドで見つけたファイルを対象にカウントする

 「--files0-from=リスト」で、リストからカウントしたいファイルを読み込みます。「--files0-from=-」のように「-」を指定すると、リストを標準入力から読み込みます。

 「--files0-from=」オプションで読み込むリストは、改行ではなく、NULL文字で区切られている必要があります。findコマンドならば「-print0」を指定することで、NULL文字区切りで結果を表示することができます。

コマンド実行例

find . -name "*.txt" -print0 | wc --files0-from=-

(findコマンドで見つけたファイルを対象にカウントする)(画面4


画面4 画面4 findコマンドで見つけたファイルを、wcコマンドでカウントする

 ちなみに、wcコマンドの表示結果は空白区切りなので、「tr」コマンドを使って空白をタブに変換すれば画面上の結果が見やすくなります。

コマンド実行例

find . -name "*.txt" -print0 | wc --files0-from=- | tr " " "\t"

(trコマンドで空白をタブに変換して、ファイルをカウントする)(画面5


画面5 画面5 trコマンドで空白をタブに変換して、ファイルをカウントする


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。