정규식이 아닌 Grep
PHP 변수를 검색해야합니다 $someVar
. 그러나 Grep은 내가 정규식을 실행하려고하고 불평하고 있다고 생각합니다.
$ grep -ir "Something Here" * | grep $someVar
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
$ grep -ir "Something Here" * | grep "$someVar"
<<Here it returns all rows with "someVar", not only those with "$someVar">>
grep에게 문자열을 정규식으로 해석 하지 않고$
다른 문자열 문자로 포함하도록 지시 하는 옵션이 표시되지 않습니다 .
그 앞에를 $
넣어 탈출하십시오 \
.
fgrep
(더 이상 사용 되지 않음) grep -F
또는 grep --fixed-strings
을 사용하여 패턴을 정규식 대신 고정 문자열 목록으로 처리합니다.
참고로 문서에는 다음이 언급되어 있습니다 (발췌).
-F
--fixed-strings
패턴을 고정 문자열 (정규 표현식 대신)의 목록으로 해석하고 개행 문자로 구분합니다. (-F는 POSIX에 의해 지정됩니다.)
fgrep
와 동일합니다grep -F
. fgrep과 같은 직접 호출은 더 이상 사용되지 않지만이를 사용하는 히스토리 애플리케이션이 수정되지 않은 상태로 실행될 수 있도록 제공됩니다.
전체 참조를 보려면 https://www.gnu.org/savannah-checkouts/gnu/grep/manual/grep.html을 확인하십시오.
grep -F
grep
인수를 패턴이 아닌 고정 된 문자열로 해석 하도록 지시하는 표준 방법 입니다.
grep에게 '-F'를 사용하여 패턴 대신 고정 문자열을 사용하도록 알려야합니다.
grep -ir "Something Here" * | grep -F \$somevar
이 질문에서 주요 문제는 정규식으로 grep
해석 $
하는 것이 아닙니다 . $someVar
환경 변수 값으로 대체하는 쉘에 관한 someVar
것입니다. 아마도 빈 문자열입니다.
따라서 첫 번째 예에서는 grep
인수없이 호출하는 것과 같 으며 이것이 usage
출력을 제공하는 이유 입니다. 두 번째 예는 someVar
빈 문자열이 모든 행에 있기 때문에 모든 행을 제외한 모든 행을 반환해서는 안됩니다 .
아니 대체 셸을 말하자면, 당신은 사용해야 '$someVar'
하거나 \$someVar
. 그런 다음 $
캐릭터 의 grep 해석을 처리해야 하므로 grep -F
다른 많은 답변에 제공된 옵션이 있습니다.
따라서 유효한 대답은 다음과 같습니다.
grep -ir "Something Here" * | grep '$someVar'
-F
옵션에 +1 하면 수락 된 답변이됩니다. 를 검색하는 동안 또한, 나는 "이상한"행동을했다 -I..
같이, 내 파일에서 패턴 -I
의 옵션으로 간주되었다 grep
; 이러한 종류의 오류를 방지하기 위해를 사용하여 명령의 인수 끝을 명시 적으로 지정할 수 있습니다 --
.
예:
grep -HnrF -- <pattern> <files>
누군가를 도울 수 있기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/9416390/grep-not-as-a-regular-expression
'IT박스' 카테고리의 다른 글
$ this vs $ (this) in jQuery (0) | 2020.10.20 |
---|---|
Android Studio에서 ActionBarsherlock을 가져 오는 동안 Gradle 위치가 잘못된 오류입니다. (0) | 2020.10.20 |
이미지에서 알파 채널 제거 (0) | 2020.10.20 |
vim을 사용할 때 OS X에 crontab 항목이없는 이유는 무엇입니까? (0) | 2020.10.20 |
IDE에서 고정 폭 글꼴을 사용하는 이유는 무엇입니까? (0) | 2020.10.20 |