Я никогда не использовал grep для разбора HTML-файлов, и у меня возникла следующая проблема:

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

Я тоже пытался ...

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

… но безрезультатно.

Есть ли способ получить grep/bash для разбора HTML-файлов, или я должен использовать другое приложение?

Спасибо.


Редактировать: похоже, что есть хитрость между оболочкой и grep. Поиск точной строки "test" работает, в то время как «t.st» и «t.st» не работают. Кто-нибудь знает почему?


Редактировать: это опция "-P", которая по какой-то причине нарушает регулярное выражение.


Редактировать: Да, опция "-P" требует удвоения символа точки, который обозначает любой символ. Weird.

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

1 ответ1

0

Попробуйте использовать одиночные кавычки ' этого, как это:

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

Grep действует по-другому, когда все в двойных кавычках.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .