sed 只打印匹配的表达式

use*_*250 9 regex sed

如何让 sed 只打印匹配的表达式?

我想将诸如“电池 0:充电,44%,充电”之类的字符串重写为“电池:44%”。我尝试了以下方法:

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

这不起作用。

常见的“解决方案”是使用搜索和替换并匹配整行: sed -n 's/.*\([0-9]*%\).*/Battery: \1/p' 现在 .* 太贪婪了,\1 只是 %。

此外,我不想匹配比我需要的更多。

use*_*686 12