我不得不删除一切,但1,2,或3个数字(0-9或10-99或100)之前%来自其他命令的输出和管道向前(我不希望看到的%,虽然)至另一个命令.我知道
sed -n '/%/p'
Run Code Online (Sandbox Code Playgroud)
将仅显示包含%的行,但这不是我想要的.我怎样才能摆脱剩下的不需要的文本,只留下这些数字然后将它们传递给另一个命令?
gle*_*man 23
如果你没有完全依赖于sed,那么这正是grep -o:
grep -o '[0-9]\{1,3\}%'
Run Code Online (Sandbox Code Playgroud)
sed -e 's/[^0-9]*\([0-9]*\)%.*/\1/'捕获一组中的数字,并且由于模式匹配所有内容(前导和尾随.*),因此所有内容都被丢弃。
(我的模式匹配任意数量的数字,因为sed正则表达式不支持像[0-9]{1,3}您在 perlre 和其他中看到的方便的快捷方式,所以我选择保持简单来说明您关心的原则)
编辑:修复引用并替换前导.*,[^0-9]*以避免贪婪匹配消耗数字。再次使用 perlre 更加简单,您可以使用非贪婪.?*
| 归档时间: |
|
| 查看次数: |
32501 次 |
| 最近记录: |