使用 grep 搜索字符串

使用 grep 搜索字符串

我只是在 emacs 中搜索一些具有以下模式的字符串:

^*DEFUN*event*$

所以我使用了 grep:

grep -nR "^*DEFUN*event*$" *

但没有匹配,相反有很多,例如:

DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,

怎么了?

答案1

grep您正在使用需要正则表达式的通配符(又名“通配符”) 。然而,在正则表达式中,*并不意味着“任何字符序列”,而是“零个或多个前一个字符”。当它用作表达式的第一个字符(或紧接在“行首”符号之后^)时,它代表一个文字星号。

因此,您的表达式^*DEFUN*event*$会搜索以下行:

  • 从一个开始*
  • 立即继续DEFU
  • 后面跟着零个或多个N
  • 后面跟着这个词even
  • 并继续零个或多个t直到行尾。

您正在寻找的正则表达式是

^.*DEFUN.*event.*$

或者简而言之(正如 Stéphane Chazelas 在评论中提到的那样)

DEFUN.*event

相关内容