带有egrep的regexp字符或行尾
我有以下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
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($|-)
这基本上等同于您的第一个表达式,但在您的第一个表达式中,我看不出在匹配中需要。*因为N70也可以在表达式的中间,像这样的N79N70-S15 S16,你需要在你的表达式中间有(CHR1-N70)匹配,不仅N70匹配,也匹配CHR1 N7000。它不再匹配像“chr1 n7006”这样的字符串。