Linuxコマンド辞典 wcコマンド(テキスト処理)

ファイルの行数/単語数/バイト数を表示する「wc」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

指定されたファイルの行数/単語数/バイト数を表示します。ファイルの代わりに「-」を指定した場合は、標準出力を読み込んで計測結果を出力します。

複数のファイルを指定することもできます。シェルではコマンドラインの上限があり。それを超えるファイル名の集まりはwcに渡せません。このような場合は、findコマンド等でwcコマンドに渡したいファイル数を絞り込みファイルリストを読み込ませれば、この上限を気にせずに渡すことができます。

「–file0-from=オプション」はそのファイルリストの各行が「\0」で終わっている場合に使います。findなどで「-print0オプション」を使った出力、ファイルが「\0」で終わるファイルになります。

書式

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

オプション

-c
–bytes
バイト数を表示する
-l
–lines
改行数を表示する
-m
–chars
文字数を表示する
-w
–words
単語数を表示する
-L
–max-line-length
最大長の行の文字数を表示する
–files0-from=”各ファイルがゼロバイトで終わるリスト”findで「-print0オプション」を利用した出力など、ファイル名の区切りに「\0」を
利用したファイルリストを処理する

ファイルの行数/単語数/バイト数を表示する

ファイルの内容を改行数/単語数/文字数の順番で表示する。

$ wc ファイル名

実行結果

[sunarin@localhost work]$ cat test.txt
a
a
b
b
c
c
c
d
e
f
g
f

[sunarin@localhost work]$ wc test.txt
13 12 25 test.txt        #<改行数/単語数/文字数の順番で表示する
[sunarin@localhost work]$ 

文字のバイト数の比較

ファイル内のテキストをバイト数で表示する「-c」オプション

$ wc -c ファイル名

実行結果

[sunarin@localhost work]$ echo "あ"|wc -c
4
[sunarin@localhost work]$ echo "a"|wc -c
2
[sunarin@localhost work]$ 

最長行の文字数を表示する

ファイル内で最長の行の文字数を表示するためには、「-L」オプションを使用します。

$ wc -L ファイル名

実行結果

[sunarin@localhost work]$ wc -L /etc/passwd
99 /etc/passwd
[sunarin@localhost work]$ 

ファイルが「¥0」で終わる場合の対処方法

$ find 検索対象パス -name "パターン" -print0 | wc --files0-from=-

実行結果

workディレクトリ内にあるテキストファイルをすべて調べる。

[sunarin@localhost ~]$ find ./work -name "*.txt" -print0 | wc --files0-from=-
6 6 12 ./work/comm2.txt
5 5 10 ./work/log/comm1.txt
1 1 4 ./work/log/comm3.txt
5 5 12 ./work/comm1.txt
50 50 344 ./work/linetest.txt
8 23 284 ./work/Animal_garden_unix.txt
8 23 301 ./work/Animal_garden_unix_spc.txt
10 10 33 ./work/abc.txt
13 12 25 ./work/test.txt
106 135 1025 合計
[sunarin@localhost ~]$ 

シェルコマンドラインの上限は「getconf ARG_MAX」で設定されています。これを超える場合はlsした場合「/bin/ls:引数リストが長すぎます」というエラーが表示されます。

標準入力からデータを読み込んで、加工して結果を標準出力に出力する機能をもったコマンドをフィルタといいます。wcコマンド、grepコマンド、sedコマンド、sortコマンド、uniqコマンドなどがフィルタに該当します。