2013-08-12 3 views
6

ab*cd을 포함하는 abc.txt 파일이 있다고 가정합니다. 내가 따옴표를 모두 사용하는 경우이스케이프 처리없이 별표를 grep하는 방법은 무엇입니까?

 
> grep ab*c abc.txt 
> grep "ab*c" abc.txt 
> grep 'ab*c' abc.txt 

및 탈출이

 
> grep "ab\*c" abc.txt 
ab*cd 
> grep 'ab\*c' abc.txt 
ab*cd 

지금 내가 왜 궁금합니까 : 나는 따옴표와 함께하지만, 별표 (*)를 탈출하지 않고 그 패턴 ab*cdgrep 때 작동하지 않습니다 따옴표가 작동하지 않고 별표를 이스케이프하지 않고 따옴표 만 사용할 수있는 경우. 우선

+2

는 또한 문자 별표와 일치하는 문자 클래스를 사용할 수 있습니다. 대괄호는 쉘에서도 의미가 있기 때문에 표현식을 인용 부호로 묶어야합니다. 'grep 'ab [*] c'abc.txt' – tripleee

+1

해결하려는 문제는 무엇입니까? 셸을 사용하려는 경우 메타 문자 및 따옴표를 이해하고이를 피하지 않아야합니다. – tripleee

답변

12

사용 플래그 -F을 고정 문자열을 검색하는 - 대신 정규 표현식. 예를 들어

-F, --fixed-strings 
      Interpret PATTERN as a list of fixed strings, separated by 
      newlines, any of which is to be matched. (-F is specified by 
      POSIX.) 

: man grep에서

$ grep -F "ab*c" <<< "ab*c" 
ab*c 
6

, 당신은 염두에 두어야 : regex =/= glob

*는 정규식에서 특별한 의미가있다. 당신은 문자 그대로 그것을 맞추기 위해 그것을 벗어나야 만합니다. *를 탈출하지 않고, GREP 예를 들어 ab+(any number of b)+c

을 일치 시키려고 :

abbbbbbbbbbbbc

관련 문제