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 ワンライナーを試してみると、次のようになります。
echo " 86%" | perl -nle 'print if s!\s|%!!g'
それは正常に動作し、出力します86
。
では、なぜ acpi コマンドで動作しないのでしょうか。
PS: sed/awk を使用してこれを達成できることは承知していますが、私のソリューションが機能しない理由に興味があります。