【发布时间】:2016-02-08 19:11:29
【问题描述】:
我在 Ubuntu 14.04 服务器上有一个名为 vsearch.awk 的 awk 控制文件,其中包含两行简单的代码,如下所示:
BEGIN { RS="\n\n" ; }
$0 ~ search { print }
我从命令行运行此文件以搜索 XML 文件中的特定字段,如下所示:
awk -f vsearch.awk search=example stuff.xml
它会打印出我需要的确切字段(包含单词“example”)。 但是,当我针对 Apache 主机 .conf 文件(也似乎是 XML 格式)运行它时,awk 结果只是吐出整个文件。 我同时使用了 gawk 和 mawk,结果相同(两者都适用于常规 XML 文件,但不适用于 .conf 文件。)
有什么想法吗?
谢谢!
【问题讨论】:
-
可能第一个 XML 和 .conf 文件中的行分隔符不一样。
-
试试看这个文件是否包含一些奇怪的东西或者它来自一个 DOS 系统。你可以
cat -vet它并检查奇怪的字符。 -
@fedorqui cat -vet 在每行末尾显示 $ 特殊字符。然而(奇怪的是)$ 也出现在分隔每个段落的行中的 2 个空格。这是标准行为吗?
-
@fedorqui - 我编辑了 .conf 文件以删除段落分隔行中的那些额外空格,并且 awk 现在可以正常运行搜索了!谢谢你的帮助! PS。您可以将您的建议添加为官方答案,以便我接受并投票。
-
很高兴看到它已解决,@Cain !刚刚发布了一个带有一些解释的答案。