我希望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
答案 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 \?,\ +,\ {,\ |,\(和\)。