
HTML ファイルを解析するために grep を使用したことがないので、次のような問題が発生しています。
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」オプションでは、任意の文字を表すドット文字を 2 倍にする必要があります。奇妙ですね。
grep -Po 't..st' input > output
答え1
代わりに、次のように一重引用符を使用してみてください'
。
grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html
二重引用符で囲まれている場合、Grep の動作は異なります。