grepを使用して文字列を検索する

grepを使用して文字列を検索する

私はemacsで次のパターンを持ついくつかの文字列を検索しています。

^*DEFUN*event*$

だからgrepを使用しました。

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

しかし、一致するものがなく、代わりに多くの項目があります。たとえば、次のようになります。

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

何が問題なの?

ベストアンサー1

grep正規表現が必要なワイルドカード(「ワイルドカード」とも呼ばれる)を使用しています。ただし、正規表現では、*「すべての文字シーケンス」ではなく、「0個以上の前の文字」を意味します。式の最初の文字(または「行の先頭」記号の直後^)として使用される場合は、次のことを示します。言葉アスタリスク。

したがって、式は^*DEFUN*event*$次の行を検索します。

  • 一つで始まる*
  • 今続けるDEFU
  • その後に0個以上が続きます。N
  • その後の単語even
  • t行が終わるまでゼロ以上続けます。

探している正規表現は次のとおりです。

^.*DEFUN.*event.*$

または簡単に言うと(コメントでStéphane Chazelasが述べたように)

DEFUN.*event

おすすめ記事