我正在尝试找到一种更好/更简单的方法来计算文件或 shell 变量中的字母字符

我正在尝试找到一种更好/更简单的方法来计算文件或 shell 变量中的字母字符

我有一个包含以下文本的文件:

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]

相关内容