0

重複の可能性:
BASHスクリプトを使用してHTMLテーブルからデータを抽出します

次のコンテンツを含むhtmlファイルがあります。sedを使用して、パターン間のすべてのコンテンツ(複数行)を削除し、残り< script ..... ></script>そのままにします。タグも削除したいです。

どんな助けでもいただければ幸いです。ありがとう!私は次の両方を試しましたが、運がありませんでした。

cat test.html | tr -d '\n' | sed 's/< script.*<\/script>//g' > output.txt

sed '/< script/,/<\/script>/d' test.html > output.txt    

don't touch this.

this is not to be removed < script bla bla> this is to be

removed. < /script> this is going to

stay < script bla bla bla bla bla> remove this

and this 

and this < /script> and this stays as is.

this too.

4

2 に答える 2

0

これはうまくいくかもしれません(GNU sed):

sed ':a;$!{N;ba};/\x00/q1;s/<\s*\/\?script[^>]*>/\x00/g;s/\x00[^\x00]*\x00//g' file

HTML ファイルに 16 進コードが含まれているため、失敗する可能性が漠然とあります\x00。その場合、戻りコードは に1なり、ファイル出力は変更されません。

説明:

  • :a;$!{N;ba}ファイルをパターン空間に丸呑みする
  • /\x00/q1ファイルの 16 進コードを確認し、\x00見つかった場合は次のリターン コードで終了します1
  • s/<\s*\/\?script[^>]*>/\x00/gすべてのscript開始タグと終了タグを\x00
  • s/\x00[^\x00]*\x00//g\x00の間のすべてを削除します
于 2012-09-26T07:13:11.310 に答える
0

どうですか:

cat yourfile | tr -d '\n' | sed -e 's,< script.*< /script>,,g'

終了タグのスペースに注意してください

于 2012-09-25T16:44:06.437 に答える