为什么`wc -c`总是会计数1个字符?

tmp我键入单个字符,但wc -c显示2 ,为什么?

因为换行符也是字符。 告诉你的文本编辑器不要在文件末尾添加一个。 不,我不知道如何。

一种方法是tr删除换行符,然后您可以计数字符。

标准行为:

 echo HELLO | wc -m # result: 6 echo -n HELLO | wc -m # result: 5 

要显示find的换行符的数量:

 echo HELLO | wc -l # result: 1 echo -n HELLO | wc -l # result: 0 

剥离换行符和计数字符:

 echo HELLO | tr -d '\n' | wc -m # result: 5 

删除换行符(可能返回\r )并计算input文件的字符数:

 tr -d '\n\r' < input.txt | wc -m 

对于我的计算,我一直在使用类似的build议。

作为一个解决方法,你可以用wc -l来计算换行符,并从wc -c的计数中减去它们。

 function num_chars () { # echo -e tells echo to honor certain sequences like \n chars=$(echo -e "${1}" | wc -c) lines=$(echo -e "${1}" | wc -l) real_chars=$(echo "$chars - $lines" | bc) echo "$real_chars" } num_chars "hello Dolly" 11 #Result num_chars "hello dolly" 11 #Result num_chars "hello \nDolly" 11 #Result