我使用命令 wc -c 来计算字符数,但它给了我一个错误的数字,例如字符数加一:
echo "k" | wc -c
Run Code Online (Sandbox Code Playgroud)
它给了我 2 个字符
那为什么不是 1?
din*_*esh 19
查看 的帮助消息wc
。该-c
选项打印出字符数。该echo
命令默认包含一个换行符。当wc
看到换行符时,它会将其视为另一个字符,因此结果中的额外计数。您可以使用下面显示的替代方法之一来解决此问题;-w
计算单词-l
数和计算行数。
echo "k" | wc -w
echo "k" | wc -l
Run Code Online (Sandbox Code Playgroud)
您可以通过管道输出wc
toawk
以获取不包括换行符的字符数:
wc <filename> | awk '{print $3-$1}'
Run Code Online (Sandbox Code Playgroud)
wc
不带选项的默认输出按此顺序打印出换行符数($1 到 awk)、单词数和字符数($3 到 awk)。
F. *_*uri 16
当你echo "k"
,该echo
命令将一个换行符附加到你要求它打印的任何内容(“k”)。您可以使用该-n
选项禁用此功能:
echo -n k | wc -c
1
Run Code Online (Sandbox Code Playgroud)
要查看该隐形字符,您可以转储流 whithod
或hd
:
echo k | od -t c
0000000 k \n
echo k | hd
00000000 6b 0a |k.|
echo k | od -t a -A n
k nl
Run Code Online (Sandbox Code Playgroud)
小智 6
这是因为您正在使用echo
,它会向您的字符串添加换行符。使用printf
来代替:
$ echo k | wc -c
2
$ printf k | wc -c
1
Run Code Online (Sandbox Code Playgroud)