wcコマンド
ファイル内の行数、単語数、バイト数をカウントします。
概要
wc
(word count)コマンドは、指定されたファイル内の行数、単語数、バイト数、または文字数をカウントして表示します。テキスト処理でファイルの内容を分析したり、他のコマンドの出力をカウントするパイプラインの一部として一般的に使用されます。
オプション
-l, --lines
ファイル内の行数をカウントします。
$ wc -l file.txt
42 file.txt
-w, --words
ファイル内の単語数をカウントします。
$ wc -w file.txt
320 file.txt
-c, --bytes
ファイル内のバイト数をカウントします。
$ wc -c file.txt
1872 file.txt
-m, --chars
ファイル内の文字数をカウントします(マルチバイトエンコーディングではバイト数と異なる場合があります)。
$ wc -m file.txt
1850 file.txt
-L, --max-line-length
ファイル内の最長行の長さを表示します。
$ wc -L file.txt
78 file.txt
使用例
基本的な使用法(デフォルト出力)
$ wc file.txt
42 320 1872 file.txt
出力は行数、単語数、バイト数(この順序)を示しています。
複数のファイル
$ wc file1.txt file2.txt
42 320 1872 file1.txt
10 85 492 file2.txt
52 405 2364 total
パイプラインでwcを使用する
$ cat file.txt | grep "error" | wc -l
5
これはfile.txt内の「error」を含む行数をカウントします。
ヒント:
複数のファイルの単語数をカウントする
ワイルドカードを使用して複数のファイルの単語数をカウントできます:wc -w *.txt
は現在のディレクトリ内のすべてのテキストファイルの単語数を表示します。
ディレクトリ内のファイル数をカウントする
ls
と組み合わせてファイル数をカウントします:ls -1 | wc -l
は現在のディレクトリ内のエントリ数をカウントします。
メモリ使用量
非常に大きなファイルの場合、wc
はサイズを確認するためにテキストエディタにファイルを読み込むよりもメモリ効率が良いです。
行数ヘッダーを無視する
スクリプトでwc -l
を使用する場合、awk
を使用して数字だけを抽出します:wc -l file.txt | awk '{print $1}'
よくある質問
Q1. wcは何の略ですか?
A. wc
は「word count(単語数)」の略です。
Q2. ファイル内の文字だけをカウントするにはどうすればよいですか?
A. 文字数をカウントするにはwc -m
を使用します。バイト数の場合はwc -c
を使用します(ASCIIファイルでは同じです)。
Q3. なぜ行数がテキストエディタで見るものと異なるのですか?
A. wc
は改行文字をカウントするため、最後の行が改行で終わっていない場合や、エディタが折り返されたテキストに対して「仮想行」を表示する場合は、カウントが異なる場合があります。
Q4. ファイル名なしで数字だけを取得するにはどうすればよいですか?
A. 内容をパイプするか:cat file.txt | wc -l
、またはawkを使用します:wc -l file.txt | awk '{print $1}'
参考文献
https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.html
改訂履歴
- 2025/05/05 初版