linux shell wc -c 计数字符+1

linux shell wc -c 计数字符+1

我使用命令 wc -c 来计算字符数,但是它给出了错误的数字,例如字符数加一:

echo "k" | wc -c 

它给了我 2 个字符

那么为什么不是 1 呢?

答案1

查看 的帮助消息wc。该-c选项会打印出字符数。echo默认情况下,该命令包含换行符。当wc看到换行符时,它会将其计为另一个字符,因此会在结果中增加计数。您可以使用下面显示的替代方案之一来解决这个问题;-w计算单词数并-l计算行数。

echo "k" | wc -w 
echo "k" | wc -l

您可以通过管道传输输出wcawk获取不包括换行符的字符数:

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

相关内容