2012-03-03 54 views
1

喜一grep的正则表达式的问题,我觉得grep的查找字符没有字符之后

我有两个类似的术语很多情况下,在一个文件,例如:

'stop_codon,5UTR' & 'stop_codon' 

较长期的始终是第一项,逗号,然后再增加一个词。 我想用grep来查找一个但不是其他的案例。那么我怎么才能告诉grep只找到那些没有紧跟着','的术语。

简单,我相信,但我有正则表达式的一点经验,我could'nt找到一种方法,找到一个项目的出现,除非它包含的另一种说法。

由于提前, Rubal

+0

那要看情况。如果没有后面跟着逗号和第二个字符,那么在更长的时间之后呢?该行的结束将很容易。 – marsbear 2012-03-03 15:06:17

回答

1

这会工作

'stop_condon[^,]' 

,你用一个否定的字符类

http://www.regular-expressions.info/charclass.html

+0

辉煌,谢谢! – user964689 2012-03-03 15:13:42

+0

只有如果有非逗号后面的话。如果没有任何事情发生,它不起作用。 – tchrist 2012-03-03 15:42:06

+0

这正是我想要的,我试图找到任何下列情况,并排除其中一个逗号后面的情况。 – user964689 2012-03-03 15:47:24

1

可以使用-P选项匹配了perl正则表达式模式:

$ grep -P 'stop_codon(?!,)' file.txt 
+0

谢谢你的作品! – user964689 2012-03-03 15:46:49

+0

@ user964689当行只包含**'stop_codon' **时,它可以工作。 – kev 2012-03-03 15:49:27