【问题标题】:Why wc adds plus onewc为什么加一
【发布时间】:2013-11-05 14:15:11
【问题描述】:

假设我有一个很长的词N

word0=`echo` # N = 0  
word1=`echo A` # N = 1
word2=`echo AB` # N = 2
word5=`echo ABCDE` # N = 5
word4=`echo "ABCD"` # N = 4

我用wc得到wordN的长度,例如:

echo $word0 | wc 
   1 
echo $word1 | wc 
   2 
echo $word4 | wc 
   5

wc字长加1,结果为N+1

即使使用wc -cwc -m 我也得到了N+1

问题:wc 应该这样工作吗?如果是这样,为什么它添加+1?

【问题讨论】:

标签: bash wc


【解决方案1】:

尝试:

echo -n "stuff"|wc

echo 加了一个换行符,所以如果你按byteschars 计算,至少有1个

参见以下示例:

kent$  echo ""|wc -c
1

kent$  echo -n ""|wc -c
0

kent$  echo  ""|wc -m
1

kent$  echo  -n ""|wc -m
0

如果按“字”来计算,没有区别:

kent$  echo  -n ""|wc -w
0

kent$  echo  ""|wc -w   
0

【讨论】:

    【解决方案2】:

    我的wc 打印三个值:行数、字数和字节数。我猜你的只是打印字节数。您在管道中使用的echo 命令总是添加一个换行符。这就是您要查找的额外字节。

    【讨论】:

    • 好的,这是echo换行错误?
    • word0 包含 0 个字节,但 echo $word0 输出空字符串,后跟换行符。试试echo -n $word0 | wc
    • 这是原因,不是错误,我会说,是的。
    • 或者可以完全剥离wc 并使用echo ${#word5} 来获取变量值的长度。
    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2015-03-30
    • 2011-09-27
    • 2019-11-21
    相关资源
    最近更新 更多