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줄이 끝날 때까지 0개 이상 계속됩니다 .

찾고 있는 정규식은 다음과 같습니다.

^.*DEFUN.*event.*$

또는 간단히 말해서 (댓글에서 Stéphane Chazelas가 언급했듯이)

DEFUN.*event

관련 정보