Sedに一致した式のみを出力させる方法は?
「バッテリー0:充電中、44%、充電中」のような文字列を「バッテリー:44%」に書き直したい。私は以下を試しました:
sed -n '/\([0-9]*%\)/c Battery: \1'
これは機能しません。
そこにある一般的な「解決策」は、検索を使用して、行全体を置き換えて一致させることです。sed -n 's/.*\([0-9]*%\).*/Battery: \1/p'
。*は貪欲すぎて、\ 1は%だけです。
さらに、必要以上に一致させたくありません。
正規表現をもう少し具体的にします。
_sed -n 's/.* \([0-9]*%\),.*/Battery: \1/p'
_
別のツールを選択してください。
_Perl -ne '/(\d+%)/ && print "Battery: $1\n";'
_
(記録のためだけに、_foo && bar
_はif (foo) { bar }
の省略形です。)