wcコマンド(ダブリューシー)とは | 意味や読み方など丁寧でわかりやすい用語解説
wcコマンド(ダブリューシー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ダブリューシーコマンド (ダブリューシーコマンド)
英語表記
wc command (ダブリューシーコマンド)
用語解説
wcコマンドは、Unix系OSのシェルで利用される基本的なコマンドの一つで、指定されたファイルや標準入力の「行数 (lines)」、「単語数 (words)」、「バイト数 (bytes)」を数え上げて表示する。システムエンジニアにとって、ファイルの内容を分析したり、スクリプトの出力を確認したりする際に非常に頻繁に利用されるツールである。例えば、ログファイルの大きさを把握したり、プログラムのコード行数を素早く確認したり、コマンドの出力結果から要素の数を数えたりと、その用途は多岐にわたる。このコマンドはシンプルながらも強力な機能を持ち、様々な状況でデータの概観を掴むのに役立つため、SEを目指す上で必ず押さえておくべき基本コマンドと言える。
wcコマンドの基本的な書式は wc [オプション] [ファイル名...] となる。ファイル名を指定しなかった場合、またはファイル名としてハイフン - を指定した場合は、標準入力からデータを受け取って処理する。これがパイプと組み合わせて他のコマンドの出力結果をカウントする際に非常に便利だ。
まず、オプションを指定せずに wc ファイル名 と実行した場合の挙動を説明する。例えば wc example.txt と実行すると、通常は 行数 単語数 バイト数 ファイル名 の形式で結果が出力される。この3つの情報がデフォルトで表示される最も基本的な使い方である。
次に、特定の情報のみを表示したい場合に用いるオプションについて解説する。
-l オプションは、行数 (lines) のみを表示する。例えば wc -l example.txt と実行すると、example.txt ファイル内の改行文字の数を数え、その結果のみを出力する。これは、ファイルの総行数を知りたい場合に最もよく使われるオプションの一つだ。特に、ls -l | wc -l のように他のコマンドとパイプで繋ぐことで、ディレクトリ内のファイルやディレクトリの総数を効率的に把握できる。ただし、この方法は ls コマンド自体の出力に余計な行が含まれる場合(例えば合計行など)に注意が必要だ。
-w オプションは、単語数 (words) のみを表示する。wc -w example.txt と実行すると、example.txt 内の単語の数を数えて出力する。wcコマンドにおける「単語」の定義は、空白文字(スペース、タブ、改行など)によって区切られた一連の文字の並びである。そのため、例えば日本語の文章のように単語間にスペースがない場合は、一つの長い単語としてカウントされるか、全くカウントされない場合があるため、英語圏のテキストファイルの単語数を数えるのに適している。
-c オプションは、バイト数 (bytes) のみを表示する。wc -c example.txt と実行すると、example.txt ファイルの合計バイト数を表示する。これはファイルのサイズをバイト単位で知りたい場合に有用だ。
ここで注意すべき点として、テキストファイルのエンコーディング(文字コード)によっては、-c オプションで表示される「バイト数」と、実際に人間が認識する「文字数」が異なる場合がある。特に日本語などのマルチバイト文字を扱うファイルの場合、1文字が複数バイトで構成されるため、バイト数と文字数が一致しない。このような場合に正確な文字数を知るために利用するのが -m オプションである。
-m オプションは、文字数 (characters) のみを表示する。これはマルチバイト文字を含む環境で非常に重要となるオプションだ。wc -m example.txt と実行すると、example.txt ファイル内の実際の文字数を数えて出力する。例えば、UTF-8エンコーディングの日本語テキストファイルで「こんにちは」という5文字の文字列がある場合、-c オプションでは通常15バイト(UTF-8では日本語1文字が3バイト)と表示されるのに対し、-m オプションでは5文字と表示される。
複数のオプションを組み合わせて使用することも可能だ。例えば wc -lw example.txt と実行すると、example.txt の行数と単語数を両方表示する。出力順序は通常、行数、単語数、バイト数/文字数の順となる。
wcコマンドは標準入力からの処理も得意とする。例えば、echo "Hello World" | wc -w と実行すると、echo コマンドが出力した文字列「Hello World」の単語数である 2 が表示される。また、cat file1.txt file2.txt | wc -l とすれば、file1.txt と file2.txt を連結した全体の行数を一度に数えることができる。さらに、ログファイルから特定のキーワードを含む行の数を数える際にも重宝する。例えば、grep "ERROR" application.log | wc -l と実行することで、application.log ファイル内で「ERROR」という文字列を含む行がいくつあるかを瞬時に把握できる。これは、システム運用において障害発生状況を素早く確認するなどの場面で非常に役立つ。
wcコマンドの出力は、通常ファイル名が最後に付与されるが、標準入力から処理された場合はファイル名は表示されない。また、複数のファイルを指定した場合は、それぞれのファイルごとの結果が表示された後、最後に「total」として全ファイルの合計値が表示される。例えば wc file1.txt file2.txt のように実行した場合、各ファイルの結果と合計が表示される。
このようにwcコマンドは、非常に単純な機能でありながらも、他のコマンドと組み合わせることで複雑なデータ分析の一部を担うことができる。ファイルのサイズや構造を把握するための第一歩として、またシステムの状態を監視するスクリプトの一部として、システムエンジニアの日常業務で欠かせないツールであるため、その使い方をしっかりとマスターしておくことは、効率的な作業を行う上で非常に重要となる。