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>
누군가를 도울 수 있기를 바랍니다.