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

改訂履歴