1

我正在尝试删除许多文件中的一团文本。这个 glob 被插入到文件的中间。

在我的 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

If you're trying to remove beginning and ending tag and all the text in between then you should use:

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