带有egrep的regexp字符或行尾

带有egrep的regexp字符或行尾,grep,Grep,我有以下regexp: egrep '(chr1 .*n70$|chr1 .*n70-)' results/files/forbidden_variants 这和 chr1 n70 chr1 n70-n79 chr1 n70-n79-n83 chr1 n70-n79 chr1 n70-n79-s15-s16 chr1 n70 chr1 n70-n91 chr1 n70 而且速度非常慢,因为我数百万次用不同的值替换像n70这样的ID 因此,我想摆脱或。我写过: egrep '(chr1 .*n

我有以下regexp:

egrep '(chr1 .*n70$|chr1 .*n70-)' results/files/forbidden_variants
这和

chr1 n70
chr1 n70-n79
chr1 n70-n79-n83
chr1 n70-n79
chr1 n70-n79-s15-s16
chr1 n70
chr1 n70-n91
chr1 n70
而且速度非常慢,因为我数百万次用不同的值替换像n70这样的ID

因此,我想摆脱或。我写过:

egrep '(chr1 .*n70[-\$])' results/files/forbidden_variants
但它不起作用,因为我没有将行尾与此命令匹配。输出如下所示:

chr1 n70-n79
chr1 n70-n79-n83
chr1 n70-n79
chr1 n70-n79-s15-s16
chr1 n70-n91

我做错了什么?:)谢谢。

只需在当前正则表达式中添加+即可:

egrep '(chr1 n70[-\$]+)' results/files/forbidden_variants

你为什么不简单地使用

chr1 n70
您可以使用或

chr1 n70($|-)

这基本上等同于您的第一个表达式,但在您的第一个表达式中,我看不出在匹配中需要。*