【发布时间】:2015-08-28 07:21:21
【问题描述】:
我正在尝试执行以下命令 - 但输出中引入了一些前导空格。
ls -lrt | wc -l
29
echo $SHELL
/bin/bash
当我在另一台机器上运行相同的命令时,输出如预期。
ls -lrt | wc -l
183
echo $SHELL
/bin/bash
前导空格导致我的 perl 验证失败
unless ( $phCountRet->{COUNT} =~ /^\d+$/ ){
...
}
我可以选择修剪前导空白然后进行验证,但这不是一个干净的解决方案。
任何关于可能导致这种情况的指针都会有很大帮助。
【问题讨论】:
-
相关:stackoverflow.com/questions/10238363/… 其中一台机器是否运行 AIX?
-
为什么你认为修剪空白不干净?
ls | wc -l | sed -e 's/^ *//'看起来并不比ls -lrt | wc -l更干净,但你可以只做perl -E 'say length glob "*"'的等价物,根本不用去 wc。 -
当您使用多个文件名运行
wc时,它会对齐并右对齐数字,以便它们更易读(至少某些实现是这样)。输出是为了人类可读而不是机器可读。您只需要在输出中允许空格的变化。