如何计算文件中空白字符的数量?

如何计算文件中空白字符的数量?

我想计算文件中空白字符的数量。我能想到的最好的办法是:

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 中收到错误消息(除非满足下面的条件),并且在大多数 shell 中,如果当前目录中有一个名为、、:sp的文件,则会失败是一个外壳球体。ace[: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每人六人的空间、TAB、CR 和 NL 字符在我的语言环境中都被归类为空格)。

答案2

#!/bin/bash

file=`cat $1`

length=`cat $1 | wc -m` // Count the charater
count=0
for ((i = 0 ;i < $length;i++)) do //loop to the end of the string

    if [ "${file:$i:1}" == "$2" ] //Look only character by character (select some characters of the String, (:$i:1) is the range of the choosen characters
    then
        count=$((count + 1))

    fi
done    
echo $count

//test.txt = "Is there a neater way?"
#./CountChar test.txt " "
>>> 4

这是一种“其他”方式..x),希望你喜欢它!

相关内容