次のテキストを含むファイルがあります。
we are going to write something 1 2 3
wc
9つの単語と38文字の1行があると教えてください。
a-z
26文字(、数字やスペースを除くなど)のみを計算したいと思います。
これが私の現在のソリューションです。
grep -o [[:alpha:]] filename | wc -l
コマンドラインでこれを行う「より良い」方法があるかどうかを知りたいです。
答え1
アルファベット以外の文字をすべて削除し、tr
結果の文字数を計算します。tr
ソリューションとあなたのソリューションの両方を組み込みソリューションbash
に渡すと、time
このtr
ソリューションが少なくとも私のシステムでは約5倍速いことがわかります。
tr -cd '[:alpha:]' <filename | wc -m
答え2
awk
この問題を解決するためにも使用できます!
awk '{c+=gsub(s,s)}END{print c}' s='[[:alpha:]]' filename
答え3
努力する:
LC_ALL=C grep -o [[:alpha:]] | sort -u | wc -l
LC_ALL=C.UTF-8
自分の言語に合わせてロケールを変更してください[a-zA-Z]
。