我有一个包含以下文本的文件:
we are going to write something 1 2 3
wc
告诉我我有 1 行 9 个单词和 38 个字符。
我只想计算 26 个字母(a-z
,没有数字或空格等)。
这是我当前的解决方案:
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]
。