如何让 sed 只打印匹配的表达式?
我想将诸如“电池 0:充电,44%,充电”之类的字符串重写为“电池:44%”。我尝试了以下方法:
sed -n '/\([0-9]*%\)/c Battery: \1'
这不起作用。
常见的“解决方案”是使用搜索和替换并匹配整行:
sed -n 's/.*\([0-9]*%\).*/Battery: \1/p'
现在 .* 太贪婪了,\1 只是 %。
此外,我不想匹配比我需要的更多。
use*_*686 12
使正则表达式更具体一点。
sed -n 's/.* \([0-9]*%\),.*/Battery: \1/p'
Run Code Online (Sandbox Code Playgroud)选择不同的工具。
perl -ne '/(\d+%)/ && print "Battery: $1\n";'
Run Code Online (Sandbox Code Playgroud)
(仅作记录,foo && bar
是 的简写if (foo) { bar }
。)