ファイル内の空白文字の数を計算したいと思います。私が考えることができる最善は次のとおりです。
tr -cd [:space:] < my_file | wc
よりクリーンな方法はありますか?
ベストアンサー1
tr -cd '[:space:]' < my_file | wc -m
動作します。ただし、GNUでは、tr
文字ごとのシングルバイトロケール(通常はUTF-8ロケールでは機能しません)またはUTF-8ロケールのASCII入力でのみ機能します。
引用符がない場合は、[:space:]
csh、tcsh、またはzshでエラーメッセージが表示されます(以下の条件が満たされない限り)、ほとんどのシェルは現在のディレクトリに、または:
、s
p
a
c
e
[:space:]
また、wc
文字はデフォルトでは計算されません(バイト、単語、および改行はオプションが指定されていない場合にのみ計算されます)。
GNUでは、awk
次のことができます。
awk -v RS='[[:space:]]' 'END{print NR}'
例:
$ printf '\0\u2006\t\r\n' | awk -v RS='[[:space:]]' 'END{print NR}'
4
(U+2006の場合1人あたり6人が利用できるスペース、TAB、CR、およびNL文字はすべて、私のロケールで空白に分類されます。