GNU grep 2.12 및 bash 4.2.37을 사용하여 HTML을 통해 grep하는 방법은 무엇입니까?

GNU grep 2.12 및 bash 4.2.37을 사용하여 HTML을 통해 grep하는 방법은 무엇입니까?

HTML 파일을 구문 분석하기 위해 grep을 사용한 적이 없으며 다음과 같은 문제가 있습니다.

grep -Po "(?s)(<h2>.+?<!-- /endcontent -->)" input.html > output.html
-bash: !--: event not found

나도 시도했다…

grep -Po "(?s)(<h2>.+?\<!-- \/endcontent --\>)" input.html > output.html

… 소용이 없습니다.

HTML 파일을 구문 분석하기 위해 grep/bash를 얻는 방법이 있습니까, 아니면 사용해야 하는 다른 응용 프로그램이 있습니까?

감사합니다.


편집: 쉘과 grep 사이에 트릭이 있는 것 같습니다. 정확한 문자열 "test"를 검색하면 작동하지만 "t.st"나 't.st'는 작동하지 않습니다. 이유를 아는 사람이 있나요?


편집: 어떤 이유로 정규식을 깨뜨리는 "-P" 옵션입니다.


편집: 예, "-P" 옵션을 사용하려면 모든 문자를 나타내는 점 문자를 두 배로 늘려야 합니다. 기이한.

grep -Po 't..st' input > output

답변1

'대신 다음과 같이 작은따옴표를 사용해 보세요 .

grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html

Grep은 큰따옴표로 묶인 경우 다르게 작동합니다.

관련 정보