example이라는 파일이 있습니다
$ cat example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
그리고 grep
전에 공백이있는 줄을 얻는 데 사용할 때 얻을 .pdf
수없는 것 같습니다.
grep *.pdf example
아무것도 반환하지 않습니다 ( “그 리핑하고 앞에 0 개 이상의 공백을 일치 시키려고 .pdf
하지만 결과는 없습니다”)
그리고 내가 사용하면 :
grep i*.pdf example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
모든 줄이 돌아옵니다. 왜냐하면 “grep, 나에게 i
1 번 또는 0 번 일치 해 .”
그리고 마지막으로 :
grep " *.pdf" example
결과가 반환되지 않습니다
이 샘플에서는보고 싶습니다
grep .pdf
출력으로
내 생각에 어떤 문제가 있습니까?
답변
당신이 당신의 표현을 인용해야합니다. 나는 쉘 단어 쪼개기가 여기의 문제 중 하나라고 생각하지만, 모든 종류의 것들이 그렇지 않으면 잘못 될 수 있기 때문에 항상 정규 표현식을 인용해야합니다.
$ grep ' \.pdf' example
grep .pdf
또는 공백이 여러 개인 *
경우 (앞 공백이없는 경우와 일치하므로 사용할 수 없음 )
grep ' \+\.pdf' example
+
“이전 문자 중 하나 이상”을 의미합니다. BRE에서는 \
이 특수 기능을 사용 하기 위해 이스케이프 처리해야 하지만이를 피하기 위해 ERE를 대신 사용할 수 있습니다.
grep -E ' +\.pdf' example
공백을 의미하기 위해 사용할 수도 있습니다 \s
.grep
grep '\s\+\.pdf' example
.
정규 표현식 .
에서 문자 클래스에 있지 않는 한 문자를 의미 하기 때문에 리터럴을 이스케이프 처리해야합니다 .