字符串是这样的:
I am a [PHP] engineer, not a [Java] engineer, nor a [C++] engineer, nor a [C#] engineer.
我写了这个表达式,但是没用。
grep -n '\[([a-zA-Z+#]+)\]' filename
答案 0 :(得分:2)
grep只能识别BREs,除非指定了-P
,-E
和-r
标志之一。而且,这里不需要parens。
您应该使用与+
等效的BRE
grep -n '\[[a-zA-Z+#]\{1,\}\]' filename
或指定-E
标志以使其识别EREs(确实比前者更轻便,但更易于阅读)
grep -E -n '\[[a-zA-Z+#]+\]' filename
答案 1 :(得分:1)
是否有理由不仅仅使用它来在[...]
中查找字符串?
$ grep -Eo '\[[^]]+\]' file
[PHP]
[Java]
[C++]
[C#]
上面的内容无需查找方括号内的字符,而只是查找了]
以外的任何内容。