本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、「wc」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストファイルの文字数や行数を数えるための「wc」コマンドです。
「wc」はテキストファイルの行数や単語数(word count)、文字数を数えるコマンドです。単語は、空白や改行文字で区切られたものを数えます。
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の青枠部分)
バイト数ではなく、文字数を数えたい場合は「-m」オプションを使用します。さらに、行数も一緒に表示したい場合は「-l」オプション、単語数も表示したい場合は「-w」を同時に指定します。
なお、オプションの指定順に関わらず、行数/単語数/文字数/バイト数の順番で表示されます。
wc -m ファイル名
(指定したファイルの文字数を表示する)(画面2の赤枠部分)
wc -l -m ファイル名
(指定したファイルの行数と文字数を表示する)(画面2の青枠部分)
【筆者注】筆者が試した限り、CentOS 7環境の「wc 8.22」では、シフトJISのファイルの文字数を正しくカウントできていませんでした。「nkf」コマンドや「iconv」コマンドなどでUTF-8に変換してからカウントすることをお勧めします。
行数だけをカウントしたい場合は、「-l」オプションを使用します。
例えば、「find」コマンドは見つけたファイルを「1件1行」で出力するので、行数を数えることでファイルの個数を知ることができます。
find . -name "*.txt" | wc -l
(findコマンドで出力された行数を数える)(画面3)
「--files0-from=リスト」で、リストからカウントしたいファイルを読み込みます。「--files0-from=-」のように「-」を指定すると、リストを標準入力から読み込みます。
「--files0-from=」オプションで読み込むリストは、改行ではなく、NULL文字で区切られている必要があります。findコマンドならば「-print0」を指定することで、NULL文字区切りで結果を表示することができます。
find . -name "*.txt" -print0 | wc --files0-from=-
(findコマンドで見つけたファイルを対象にカウントする)(画面4)
ちなみに、wcコマンドの表示結果は空白区切りなので、「tr」コマンドを使って空白をタブに変換すれば画面上の結果が見やすくなります。
find . -name "*.txt" -print0 | wc --files0-from=- | tr " " "\t"
(trコマンドで空白をタブに変換して、ファイルをカウントする)(画面5)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.