OSX上的WC - 返回包含空格

时间:2015-06-18 23:34:16

标签: macos bash wc

当我在OSX终端中运行单词count命令时,如wc -c file.txt,我得到以下答案,其中包括在答案前填充的空格。有谁知道为什么会这样,或者我怎么能阻止它?

    18000 file.txt

我希望得到:

18000 file.txt

使用bash或bourne shell会发生这种情况。

4 个答案:

答案 0 :(得分:2)

wc的POSIX标准可能会被读取为暗示没有前导空格,但没有说显式。标准就是这样。

这就是所说的

  

默认情况下,标准输出应包含以下格式的每个输入文件的条目:

"%d %d %d %s\n", <newlines>, <words>, <bytes>, <file>

并未提及单列选项的格式,例如-c

快速检查显示AIX,OSX,Solaris使用指定值的位数的格式 - 对齐列(并且位数不同)。 HPUX和Linux没有。

所以这只是一个实现细节。

答案 1 :(得分:1)

我认为这是一种很好地排列输出的方法,据我所知,没有选择wc可以调整输出格式。

例如,你可以通过管道sed 's/^ *//'轻松摆脱它们。

可能有一个更简单的解决方案,取决于你想要摆脱它们的原因。

答案 2 :(得分:1)

至少在macOS / bash wc下表现出输出尾随位置TAB的行为。

可以使用expr避免它:

echo -n "some words" | expr $(wc -c) 
>> 10
echo -n "some words" | expr $(wc -w) 
>> 2

注意-n防止回显换行符,该换行符在wc -c中为1

答案 3 :(得分:0)

每次我编写一个计算行或字符的脚本时,这都会让我感到困惑。我希望wc被定义为不会释放额外的空格,但它不是,所以我们会坚持使用它们。

当我编写脚本时,而不是

nlines=`wc -l $file`

我总是说

nlines=`wc -l < $file`

以便wc的输出不包含文件名,但这对额外的空格没有帮助。我接下来使用的技巧是在数字上加0,如下所示:

nlines=`expr $nlines + 0`      # get rid of trailing spaces