web-dev-qa-db-ja.com

Sed一致した式のみを出力

Sedに一致した式のみを出力させる方法は?

「バッテリー0:充電中、44%、充電中」のような文字列を「バッテリー:44%」に書き直したい。私は以下を試しました:

sed -n '/\([0-9]*%\)/c Battery: \1'

これは機能しません。

そこにある一般的な「解決策」は、検索を使用して、行全体を置き換えて一致させることです。sed -n 's/.*\([0-9]*%\).*/Battery: \1/p'。*は貪欲すぎて、\ 1は%だけです。

さらに、必要以上に一致させたくありません。

9
user75250
  • 正規表現をもう少し具体的にします。

    _sed -n 's/.* \([0-9]*%\),.*/Battery: \1/p'
    _
  • 別のツールを選択してください。

    _Perl -ne '/(\d+%)/ && print "Battery: $1\n";'
    _

    (記録のためだけに、_foo && bar_はif (foo) { bar }の省略形です。)

12
user1686