我使用命令 wc -c 来计算字符数,但是它给出了错误的数字,例如字符数加一:
echo "k" | wc -c
它给了我 2 个字符
那么为什么不是 1 呢?
答案1
查看 的帮助消息wc
。该-c
选项会打印出字符数。echo
默认情况下,该命令包含换行符。当wc
看到换行符时,它会将其计为另一个字符,因此会在结果中增加计数。您可以使用下面显示的替代方案之一来解决这个问题;-w
计算单词数并-l
计算行数。
echo "k" | wc -w
echo "k" | wc -l
您可以通过管道传输输出wc
以awk
获取不包括换行符的字符数:
wc <filename> | awk '{print $3-$1}'
不带选项的默认输出wc
将按以下顺序打印出换行符的数量($1 到 awk)、单词数和字符数($3 到 awk)。
答案2
当您 时echo "k"
,该echo
命令会将换行符附加到您要求其打印的内容(“k”)。您可以使用该-n
选项禁用此功能:
echo -n k | wc -c
1
为了观看无形的字符,你可以使用od
或转储流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
答案3
这是因为您使用了echo
,这会在字符串中添加换行符。请printf
改用:
$ echo k | wc -c
2
$ printf k | wc -c
1