题
我用过:
tr -dc [:alpha:] < $fileDoc | wc -c
计算所有字母,
tr -dc ' ' < $fileDoc | wc -c
计算所有空格,
tr -dc '\n' < $fileDoc | wc -c
计算文本文档中的所有新行。
我现在想做的是现在要做的是计算文档中的所有其他字符,因为我将调用其他所有东西。
这是文档中的文本:
你好这是一个测试文本文档。
123
!@#
有没有办法删除所有内容 [:alpha:]
, , ,而
\n
找到并计算剩余的字符?
解决方案
这应该做的伎俩
tr -d '[:alpha:] \n' < $fileDoc | wc -c
或者,如果您想在空白的定义中包含制表符
tr -d '[:alpha:][:space:]' < $fileDoc | wc -c
根据OP的注释,删除字母、空格、数字和换行符,并计算所有剩余字符:
tr -d '[:alnum:][:space:]' < $fileDoc | wc -c
[:alnum:]
占字母和数字的字母。 [:space:]
处理所有空格,包括换行符
其他提示
只是张贴在这里供参考,如果你想做所有在一个镜头,那么这个 awk
脚本应该工作:
awk -v FS='' '
{
for(i=1; i<=NF; i++) {
if($i ~ /[a-zA-Z]/) {alpha++};
if($i == " ") {space++};
if($i !~ /[A-Za-z0-9 ]/) {spl++}
}
}
END {
printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
$ cat file
This is a text
I want to count
alot of $tuff
in 1 single shot
$ awk -v FS='' '
{
for(i=1; i<=NF; i++) {
if($i ~ /[a-zA-Z]/) {alpha++};
if($i == " ") {space++};
if($i !~ /[A-Za-z0-9 ]/) {spl++}
}
}
END {
printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
Space=11, Alphabets=45, SplChars=1, NewLines=4
不隶属于 StackOverflow