如何grep包含多个连续破折号的字符串?

时间:2015-01-07 12:18:17

标签: regex grep

我希望grep获取包含破折号的字符串,如下所示:

---0 [58ms, 100%, 100%] 

至少有一个破折号。

我发现了这个问题:How can I grep for a string that begins with a dash/hyphen?

所以我想用:

grep -- -+ test.txt

但我一无所获。

最后,我的同事告诉我这将有效:

grep '\-\+' test.txt

是的,它有效。但在搜索了许多文件之后,他和我都不知道为什么。

这也有效:

grep -- -* test.txt

1 个答案:

答案 0 :(得分:2)

使用-+您说:多个-。但grep并未自动理解这一点。您需要告诉它+具有特殊含义。

您可以使用扩展的正则表达式-E

来完成此操作
grep -E -- "-+" file

或通过转发+

grep -- "-\+" file

测试

$ cat a
---0 [58ms, 100%, 100%] 
hell
$ grep -E -- "-+" a
---0 [58ms, 100%, 100%] 
$ grep -- "-\+" a
---0 [58ms, 100%, 100%] 

来自man grep

  

正常表达

     

基本与扩展正则表达式

     

在基本正则表达式中,元字符?,+,{,|,   (和)失去了他们的特殊意义;而是使用backslashed   versions \?,\ +,\ {,\ |,\(和\)。