はじめに

こんにちは!今回はwcコマンドについて解説します。

wcはファイルの行数・単語数・文字数をカウントするコマンドです。ログファイルのサイズを確認したり、テキストデータの統計情報を調べたり、毎日使う超基本的なコマンドですね。

「ファイルの大きさを数える」って感じです。便利で使用頻度は高いですよ。

wcコマンドとは

wcは、ファイルの行数・単語数・文字数(バイト数)を表示する外部コマンドです。“word count"の略ですね。

行数、単語数、バイト数などを一度に表示できます。複数ファイルに対応しており、合計も自動的に計算されます。パイプで標準入力から読み込むこともでき、他のコマンドとの組み合わせで非常に強力です。

基本構文

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

ファイルの行数・単語数・文字数をカウント。デフォルトでは「行数 単語数 文字数 ファイル名」の順に表示されます。

主なオプション

オプション 説明
-l 行数のみ表示(lines)
-w 単語数のみ表示(words)
-c バイト数のみ表示(bytes)
-m 文字数のみ表示(chars)
-L 最長行の長さを表示
--files0-from FILE ファイルリストをNUL区切りで読み込む

使用例

例1: 基本的な使い方(全てカウント)

1
wc /etc/passwd

実行結果:

1
  41  102 2342 /etc/passwd

行数: 41、単語数: 102、文字数: 2342。デフォルトで全て表示されます。

例2: 行数のみ表示

1
wc -l /etc/passwd

実行結果:

1
41 /etc/passwd

ファイルの行数が41行であることが分かります。最も使用頻度の高いオプション。

例3: 単語数のみ表示

1
wc -w file.txt

実行結果:

1
156 file.txt

ファイルに含まれる単語数が156です。テキスト分析に便利。

例4: バイト数のみ表示

1
wc -c file.txt

実行結果:

1
1024 file.txt

ファイルのバイト数(容量)が1024バイト。ファイルサイズの確認に使用。

例5: 文字数のみ表示(-m)

1
wc -m file.txt

実行結果:

1
987 file.txt

-cはバイト数、-mは文字数。日本語を含む場合は-mの方が正確。

例6: 複数ファイルをカウント

1
wc -l file1.txt file2.txt file3.txt

実行結果:

1
2
3
4
 50 file1.txt
 100 file2.txt
 75 file3.txt
 225 total

複数ファイルをカウント。合計(total)も自動計算されます。

例7: ディレクトリ内の全ファイルをカウント

1
wc -l *.txt

実行結果:

1
2
3
4
 45 file1.txt
 120 file2.txt
 89 file3.txt
 254 total

ワイルドカードで複数ファイル。合計が一目瞭然。

例8: パイプで標準入力からカウント

1
cat file.txt | wc -l

実行結果:

1
42

パイプで受け取ったテキストの行数をカウント。ファイル名は表示されません。

例9: grepの結果をカウント

1
grep "error" logfile.log | wc -l

実行結果:

1
12

「error」を含む行が12行。ログファイルのエラー件数を素早く確認できます。

例10: 最長行の長さを表示

1
wc -L file.txt

実行結果:

1
78 file.txt

最も長い行が78文字。テキストフォーマットの確認に便利。

例11: 複数ファイルの最長行を表示

1
wc -L file1.txt file2.txt file3.txt

実行結果:

1
2
3
4
 80 file1.txt
 95 file2.txt
 72 file3.txt
 95 total

複数ファイル中で最も長い行を確認。

例12: lsの出力をカウント

1
ls -la | wc -l

実行結果:

1
15

ディレクトリ内のファイル・ディレクトリ数。ファイル名ヘッダ行も含まれます。

Tips・注意点

行数のみが必要な場合は-lを使う

1
2
3
4
5
# 推奨(行数のみ)
wc -l file.txt

# 全て表示(オプション無し)
wc file.txt

必要な情報だけを取得すれば、出力がシンプルで読みやすい。

grepとの組み合わせでマッチ行数をカウント

1
2
3
4
5
6
7
8
# マッチ行数をカウント
grep "pattern" file.txt | wc -l

# マッチしない行をカウント
grep -v "pattern" file.txt | wc -l

# 大文字小文字を区別しない
grep -i "pattern" file.txt | wc -l

テキスト検索と組み合わせると非常に強力。

単語と単語数の定義

1
2
3
4
5
6
7
# 単語数カウント
echo "hello world test" | wc -w
# 結果: 3

# スペースやタブで区切られた要素が「単語」
echo "a,b,c" | wc -w
# 結果: 1(カンマは区切り文字ではない)

wc -wでの「単語」はスペースやタブで区切られた要素です。

バイト数と文字数の違い

1
2
3
4
5
6
7
# 日本語を含む場合
echo "こんにちは" | wc -c  # 16(UTF-8のバイト数)
echo "こんにちは" | wc -m  # 5(文字数)

# ASCII文字のみなら同じ
echo "hello" | wc -c  # 6(改行を含む)
echo "hello" | wc -m  # 6

日本語などのマルチバイト文字を扱う場合は-mの方が正確。

実践的な使い方

ログファイルの統計情報を取得

1
wc /var/log/syslog /var/log/auth.log /var/log/apache2/access.log

複数のログファイル情報を一度に確認。合計サイズがわかります。

gitコミットで変更行数を確認

1
git diff HEAD~1 | grep "^+" | wc -l

前のコミットから追加された行数をカウント。レビューの目安に。

Webサーバーのアクセス数をカウント

1
wc -l /var/log/nginx/access.log

アクセスログの行数 = アクセス数。リアルタイムアクセス把握に便利。

スクリプトの規模を調べる

1
wc -l script.sh

シェルスクリプトやプログラムの規模を把握。保守性の目安に。

テキストファイルの比較

1
wc -l file1.txt file2.txt

2つのテキストファイルの行数を比較。データセットのサイズ確認。

まとめ

wcコマンドのポイント:

  • ファイルの行数・単語数・文字数をカウント
  • -l: 行数のみ(最頻出)
  • -w: 単語数
  • -c: バイト数
  • -m: 文字数(日本語対応)
  • -L: 最長行の長さ
  • 複数ファイル対応(合計も表示)
  • 標準入力(パイプ)対応
  • よく使う組み合わせ: wc -l, grep | wc -l, wc -l *

テキストの統計情報取得は日々の運用の基本。grepと組み合わせるとパワフルですよ!