我正在尝试对 acpi 命令的输出执行正则表达式替换。我的 perl 一个衬里是:
acpi | perl -F/,/ -alne 'print $F[1] if ($F[1]=~s!\s|%!!)'
上面一行的输出是,87%
而我需要的输出只是87
它不会%
在字符串中替换。
现在acpi
命令的输出是
Battery 0: Discharging, 87%, 05:54:56 remaining
的输出print $F[1]
是
ronnie@ronnie:~$ acpi | perl -F/,/ -alne 'print $F[1]'
87% #space followed by 87%#
ronnie@ronnie:~$
现在奇怪的是,如果我尝试相同的 perl one-liner:
echo " 86%" | perl -nle 'print if s!\s|%!!g'
它工作正常并输出86
。
那么,为什么它不能与 acpi 命令一起使用。
PS:我知道这可以通过使用 sed/awk 来实现,但我很感兴趣为什么我的解决方案不起作用。