regexp查找除特定数字之外没有数字模式的所有行

regexp查找除特定数字之外没有数字模式的所有行,regex,grep,Regex,Grep,我在regexp和grep命令方面有一些经验,但找不到一种方法来执行以下操作 让immagine具有以下文本文件: abc 123 cdf aze ert vfg 12 gj zrr 345 rty top flg 567 aze 345 odi 我需要获取包含“345”的所有行,以及没有与patern[0-9]{3}匹配的其他数字的行,以便它返回: aze ert vfg 12 gj zrr 345 rty aze 345 odi 问候, 你可以试试下面的方法 grep -P '\b345

我在regexp和grep命令方面有一些经验,但找不到一种方法来执行以下操作

让immagine具有以下文本文件:

abc 123 cdf
aze ert
vfg 12 gj
zrr 345 rty
top flg 567
aze 345 odi
我需要获取包含“345”的所有行,以及没有与patern[0-9]{3}匹配的其他数字的行,以便它返回:

aze ert
vfg 12 gj
zrr 345 rty
aze 345 odi
问候,

你可以试试下面的方法

grep -P '\b345\b|^(?!.*\b\d{3}\b)' file
\b345\b
首先匹配包含数字345的行


(?!.\b\d{3}\b)
负先行断言我们要匹配的行不包含三位数。如果是,那么它将匹配该特定行的开始
-P
单独打印所有匹配的行。

如果使用

-P
(perl)选项,则需要一个反向前瞻,grep支持该选项:

grep-p
试试这个。参见演示


太好了,谢谢大家!!以前从未听说过消极前瞻

因此,为了进一步解释并给出更简单的regexp:

grep-p'345 | ^(?.*[0-9]{3})文件

-p是使用perl风格的regexp(支持前瞻性) ?! 是否定的前瞻表达式


谢谢。

@avin碰巧是的,但是我在看到你的帖子之前发了帖子(我的浏览器崩溃了好几次)@avin如果你一定要知道我在iPhone上,而且速度很慢going@xtrder99
grep -P "\b345\b|^(?!.*\b[0-9]{3}\b)"
^.*?345.*$|^(?!(?:.*\d){3,}).*$