今回は簡単なコマンドwcです。wcは文字数をカウントするという至ってシンプルな機能を持つコマンドです。wcのコマンド名もそのままWord Countを略したものなので覚えるのも簡単です。wcコマンドは文字数だけでなく行数などもカウントすることができます。Windows系には標準コマンドとしては該当する機能のコマンドは存在しないようですが、PowerShellならCount、Length、Measure-Objectで取得できます。なお、PowerShellについては次回説明します。
今回もこれまでのようにサンプルで利用するファイル・ディレクトリはデスクトップのsampleディレクトリとしています。デスクトップにsampleディレクトリがない場合は作成しておいてください(コマンド入力ならmkdir ~/Desktop/sampleとして作成することができます)。
また、カレントディレクトリも上記の場所になります。cd ~/Desktop/sampleのようにコマンドを入力してカレントディレクトリを変更しておけばよいでしょう。
文字数・行数などをまとめてカウント
wcコマンドでカレントディレクトリにある1.txtの文字数や行数を表示させてみましょう。この場合、wcの後にファイル名を指定するだけです。
wc 1.txt
タブで区切られた4つのデータが表示されていますが、左側から行数・単語数・バイト数・ファイル名になります。日本語の場合は単語数、バイト数はあまり意味がないかもしれません。
wcコマンドでの行数カウントには注意が必要です。というのもテキストによっては正しい行数にならないことがあるからです。wcコマンドがカウントする行数は改行コードなので行末(ファイルの最後)に改行コードがないと行数を正しくカウントすることができません。今回使用しているテキストファイルはいずれもファイルの最後に改行が入っています。最後に改行コードが入っていない場合でも行数をカウントするには以下のようにします。なお、1b.txtファイルの最後には改行コードは入っていません。
grep '' 1b.txt|wc -l
本当にwcコマンドが改行コードだけをカウントしているか気になる人は以下のURLにwcコマンドのソースリストがありますのでチェックしてみるとよいでしょう。macOSのwcコマンドの方がシンプルで読みやすいと思います。
・macOS (BSD)
https://opensource.apple.com/source/text_cmds/text_cmds-99/wc/wc.c.auto.html ・Linux
https://github.com/coreutils/coreutils/blob/master/src/wc.c
バイト数を出力
文字数ではなくバイト数(1バイト=8ビット)だけを出力するには-cを指定します。以下のようにするとカレントディレクトリにある1.txtファイルのバイト数を表示します。
wc -c 1.txt