如何编写正则表达式搭配grep命令将文本中高于85%的百分位数标红
解决方案
你可以直接使用调整后的正则匹配规则,只命中86~100%区间的百分比数值(兼容小数场景,比如86.5%、99.99%、100.00%都可正常匹配),修改后的命令如下:
grep -P --colour=always '(?:^|(?<=[, ;\-+*/]))(?:100(?:\.0+)?|(?:8[6-9]|9[0-9])(?:\.[0-9]+)?)\b%' 你的目标文件路径
正则规则说明
- 边界判断
(?:^|(?<=[, ;\-+*/])):保留你原规则的前后分隔符要求,确保不会匹配到夹在其他字符中间的数字 - 数值区间匹配逻辑:
- 匹配100%(含100.00%这类小数点后全零的合法100%场景):
100(?:\.0+)? - 匹配86~99.xxxx%的场景:
(?:8[6-9]|9[0-9])(?:\.[0-9]+)?
- 匹配100%(含100.00%这类小数点后全零的合法100%场景):
- 末尾
\b%:确保数字后面紧跟百分号,避免匹配到无百分号的普通数字
如果你不需要匹配小数场景,直接把小数匹配部分删掉即可,命令简化为:
grep -P --colour=always '(?:^|(?<=[, ;\-+*/]))(?:100|8[6-9]|9[0-9])%' 你的目标文件路径
内容的提问来源于stack exchange,提问作者Jack Bittker
相关产品推荐
相关产品推荐

