Next: , Up: Summarizing files   [Contents][Index]


6.1 wc: 行数、単語数、バイト数を表示する

wc は、指定された各 file に含まれる、バイト数、文字数、ホワイトスペース (訳注: 空白、タブ、改行など) で区切られた単語数、改行数を算出する。 file が指定されなかった場合や、file として ‘-’ が指定された場合は、標準入力を対象とする。


書式:

wc [option]… [file]…

wc は各ファイルにつき、一行の算出結果を出力する。 引数としてファイルが指定されていれば、そのファイル名を数値の後ろに表示する。 複数の file が指定されている場合は、最後の行で合計を表示し、 ファイル名の部分に、total と書き込む。表示される数値の順番は、 改行数、単語数、文字数、バイト数、最長行の長さになる。 各数値は、フィールドに右詰めで表示され、フィールド間には、少なくとも一個の空白が置かれる。 そうすることで、複数の数字とファイル名が、たいていの場合きちんと整列するようになっているのだ。 数値の入るフィールドの幅は、入力に応じて変化するので、 一定のフィールド幅を当てにするべきではない。ただし、GNU の拡張として、 表示される数値がただ 1 個だけの場合は、その数値の頭に空白を入れないことになっている。

デフォルトでは、wc は 3 個の数値を表示する。 すなわち、改行数、単語数、バイト数である。 オプションによって、特定の数値のみを表示するように指定することもできる。 どんなオプションも、それ以前に指定されたオプションを取り消すことはない。従って、

wc --bytes --words

上記のコマンドは、バイト数と単語数の両方を表示することになる。

--max-line-length を指定すると、wc はファイルごとの最長行の長さを表示する。さらに、複数のファイルが存在する場合は、 (各最長行の合計ではなく) 最長行中の最長のものを表示する。ここで言う行の長さは、 画面に表示される桁数のことである。表示桁数の計算は現在のロケールに従って行われ、 タブ位置は 8 桁ごとに来るものとされる。

このプログラムでは以下のオプションが使用できる。参照: Common options.

-c
--bytes

バイト数のみを表示する。

-m
--chars

文字数のみを表示する。

-w
--words

単語数のみを表示する。

-l
--lines

改行数のみを表示する。

-L
--max-line-length

最長表示行の長さのみを表示する。タブは 8 桁ごとの位置ににあるものとする。 ワイド・キャラクタについては、表示される幅を考慮する。非表示文字の幅は 0 とする。

--files0-from=file

コマンドラインで名前を指定されたファイルの処理を行わない。その代わりに、 ファイル file に名前が書き込まれているファイルの処理を行う。 なお、file 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL) で終端されていなければならない。このオプションは、ファイル名のリストが長すぎて、 コマンドライン長の上限を超過してしまいそうなときに、 便利である。そうした場合、wcxargs 経由で実行するのは、望ましくない。 なぜなら、xargs はファイルのリストをいくつかの部分に分割して wc に渡すので、wc はリスト全体の合計ではなく、 部分リストごとの合計を表示してしまうからである。 ASCII NUL で終端されたファイル名のリストを得る方法の一つは、 GNU find-print0 を付けて使うことである。 file に ‘-’ を指定すれば、 ASCII NUL で終端されたファイル名を標準入力から読み込むことができる。

たとえば、カレント・ディレクトリ以下にある、すべての .c ファイルや .h ファイルの内で、最長の行の長さを知るには、次のようにする。

find . -name '*.[ch]' -print0 |
  wc -L --files0-from=- | tail -n1

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。