テキストファイルの単語数を数えたいことがあると思います。
linuxコマンドではwc -w
で単語数を数えることができますが、このコマンドは
区切り文字に半角スペースだけでなく全角のスペースなども含まれてしまっています。
次の例では、区切り文字は半角と全角のスペースの両方が使われています。
$ echo "今日 は いい 天気 です 。" | wc -w
6
目的によってはこれでいいケースももちろんあると思うのですが、
半角のスペースのみを区切り文字としてファイル内の単語数を数えたい場合があるかもしれません。
私が調べた限りではwcでは区切り文字を指定することはできませんので、awk
を使うといいでしょう。
$ echo "今日 は いい 天気 です 。" | awk -F ' ' '{sum+=NF} END {print sum}'
3
この例では単語数の合計を保持する変数sum
に対して各行のフィールド数NF
を足しています。
-F
でフィールドの区切り文字を設定しています。
ちなみに-F
を省略することもでき、その場合はデフォルトの区切り文字が適用されます。
デフォルトの区切り文字は、半角スペース、タブ、改行文字から成る長さが1以上の文字列です。
ただし、文頭及び文末の区切り文字列は無視されます。