유형이 일치하는지 검색하고 싶습니다.
super([A-Za-z]+ , self)
코드베이스에서.
$ grep -nr '[s][u][p][e][r][(]' .
그것을 포함하는 모든 줄을 표시 super(
하고 싶을 때
[A-Za-z]+를 사용하여 아래 줄을 검색하려고 하면 결과가 없습니다. 누군가 내 코드베이스에 있는 모든 줄을 검색하도록 도와줄 수 있습니까 super(*word* , self)
?
anupam:codebase-2.0$ grep -nr '[s][u][p][e][r][(][A-Za-z]+' .
anupam:codebase-2.0$
답변1
기본적으로 grep
BRE(기본 정규 표현식)가 사용됩니다. 즉, 이와 같은 특수 문자는 +
리터럴 문자로 해석됩니다. 따라서 GNU grep에서는 이스케이프되어 로 작성되어야 합니다 \+
. (또는 플래그와 함께 ERE(확장 정규 표현식)를 사용할 수 있습니다. 자세한 내용은 참고 -E
자료를 참조하십시오 man grep
.) 따라서 명령은 다음과 같이 작성할 수 있습니다.
grep -nr '[s][u][p][e][r][(][A-Za-z]\+'
또한 […]
각 문자 주위의 선은 불필요합니다. 일치 […]
와 같은 문자 클래스를 지정하는 데 사용됩니다.[ab]
a
또는 b
. 에 문자가 하나만 있으면 […]
이것이 유일한 일치입니다. 따라서 코드를 다음과 같이 더욱 단순화할 수 있습니다.
grep -nr 'super([A-Za-z]\+'
참고: 에 따르면스티븐 차제라스~의논평, 이 \+
구성은 GNU 확장입니다. 그래도 문제가 해결되지 않으면 시도해 볼 수 있습니다 \{1,\}
.