如何用正则表达式排除行

时间:2013-09-13 12:03:26

标签: regex grep

我有一个带数字的行列表。需要从373开始的所有行中排除。

例如我的列表是:

37322433151
37323175491
19376717186
79684480273
97246000252
37323175491
37323175491
40745108277

如果我cat ... | egrep '^[^373].*',则会排除从37开始的行,输出为

19376717186
97246000252
40745108277

即使表达式为^[^(373)].*

如果行以373开头,我也需要排除。谁能告诉我应该使用什么表达式?

我也试过'^(?!373).*

2 个答案:

答案 0 :(得分:2)

如果您想使用正则表达式,那么您可以尝试:

^(37[^3]|3[^7]|[^3])[0-9]+$

答案 1 :(得分:1)

使用grep -v

grep -v "^373" file

使用awk:

awk '!/^373/' file

使用grep -P(PCRE):否定前瞻

grep -P '^(?!373)' file