【问题标题】:Trying to use AWK to remove a glob of text inside an html file尝试使用 AWK 删除 html 文件中的一团文本
【发布时间】:2012-04-12 17:46:05
【问题描述】:

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

在我的 bash 脚本中,我使用 AWK 尝试删除它。

命令如下:

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

&lt;/SCRIPT&gt; 是起点,也是终点。

目标是让 awk 删除文件中所有以 &lt;/SCRIPT&gt; 开头和以 &lt;/script&gt; 结尾的文本以及介于两者之间的所有内容,并且保持顶部和底部 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
 

【问题讨论】:

  • 编辑器中有一个帮助按钮。您需要将代码块缩进四个空格(有一个按钮),并将内联代码/html 放在反引号中。点击“x 时间前编辑”查看我对你的帖子做了什么。

标签: awk


【解决方案1】:

您需要在匹配项中转义 /

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

【讨论】:

    【解决方案2】:

    如果您尝试删除开始和结束标记以及其间的所有文本,那么您应该使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-25
      • 2015-10-19
      • 1970-01-01
      • 2015-02-14
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多