1

多くのファイル内のテキストの塊を削除しようとしています。このグロブはファイルの途中に挿入されます。

私のbashスクリプトでは、AWKを使用して削除しようとしています。

コマンドは次のとおりです。

awk '/</SCRIPT>/{p=1;print}</script>/{p=0}!p'

どこ</SCRIPT>が始まりでどこが終わりか。

目標は、 awk を使用して、ファイル内の で始まり、</SCRIPT>で終わるすべてのテキスト</script> 、およびその間のすべてのテキストを削除し、上部と下部の html をそのままにしておくことです。

スクリプトの最初と最後に -x と +x を追加して、どこで失敗しているかを確認しました。

awkは私にこれを教えてくれます:

awk: /</SCRIPT/>{p=1;print}/</script>{p=0}!p
awk:                        ^ syntax error

SS64 は私に次のように伝えています。

gawk' は、次のいずれかの後の改行を無視します。

 , { ? : || && do else"

そのため、awkコマンドで「<」を分離する必要があると思いますが、厄介な変数としてリストされていません...

これを行うにはどうすればよいですか、なぜ awk はこのように文句を言わなかったのですか?

awk: /</SCRIPT/>{p=1;print}/</script>{p=0}!p
awk:  ^ syntax error        ^ syntax error
 
4

2 に答える 2

3

/あなたは試合の内側を脱出する必要があります:

awk '/<\/SCRIPT>/{p=1;print} /<\/script>/{p=0}!p'
于 2012-04-12T17:52:56.680 に答える
2

開始タグと終了タグ、およびその間のすべてのテキストを削除しようとしている場合は、次を使用する必要があります。

awk '/<\/SCRIPT>/{p=1}; !p; /<\/script>/{p=0}' file
于 2012-04-12T18:05:47.870 に答える