【发布时间】:2012-04-25 12:27:05
【问题描述】:
我想使用 awk 替换文件列表中的文本。我认为这是适合这项工作的工具,因为:
“在处理文本文件时,会重复执行多种任务。您可能希望提取某些行并丢弃其余行。或者您可能需要在某些模式出现的地方进行更改,但不理会文件的其余部分。”
http://www.gnu.org/software/gawk/manual/gawk.html
这正是我想做的。
awk 读取 filelist.txt(这是一个包含要修改的每个文件的路径的文件)匹配 pattern.txt(这是一个包含 javascript 的文件,我希望从包含的所有 htm 文件中剔除在文件列表.txt)
我使用 filelist.txt 的原因是有几个文件要删除 javascript,它们位于多个位置。
我想使用 pattern.txt 的原因是 javascript 包含各种各样的东西,比如空格、特殊字符等等。
如果我尝试向 awk 提供整个 javascript,我将不得不一个接一个地转义其中包含的所有特殊字符,这将非常耗时。 (而且可能行不通,而且非常复杂!)
如果我尝试只放置 javascript 的开头和结尾,例如:
awk '/<\/SCRIPT>/{p=1;print}/<\/script>/{p=0}!p'
我冒着删除所有嵌入式 javascript 实例的风险,而不仅仅是想要的。
我试图用 awk 做的事情可行吗?
这取决于我的信念,即为它提供文件将使它将文件的全部内容解释为模式,而不是在遇到第一个符号时窒息。
【问题讨论】:
-
好问题,您可以通过添加示例数据来改进它,并从该数据中采样所需的输出。祝你好运。
-
如果您的网站被黑客入侵,唯一合理的补救措施是从版本控制回滚到已知良好的备份或快照。你已经在使用两者是有原因的,你知道...