我想在许多文件中删除一串文本。这个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"
所以我认为我需要隔离“&lt;”在我的awk命令中,它没有被列为一个麻烦的变量......
我该怎么做,为什么awk不抱怨这样?
awk: /</SCRIPT/>{p=1;print}/</script>{p=0}!p
awk: ^ syntax error ^ syntax error
答案 0 :(得分:3)
你需要逃离匹配中的/
:
awk '/<\/SCRIPT>/{p=1;print} /<\/script>/{p=0}!p'
答案 1 :(得分:2)
如果您尝试删除开头和结尾标记以及其间的所有文本,则应使用:
awk '/<\/SCRIPT>/{p=1}; !p; /<\/script>/{p=0}' file