我不是Unix shell脚本专家,但我最近遇到了删除XML注释块的结束标记的脚本的问题,从而导致整个文件成为一个巨大的未闭合注释,在中间件系统中立即失败阅读它。我将问题缩小到脚本中的strings
命令。
例如,文件temp.xml包含以下XML:
<?xml version="1.0" encoding="utf-8" ?>
<!--
This is a comment
-->
<object>Foo</object>
针对它运行以下命令:strings - temp.xml
输出结果为:
<?xml version="1.0" encoding="utf-8" ?>
<!--
This is a comment
<object>Foo</object>
请注意,仅当结束注释标记位于其自身的行上且不包含任何其他内容时,才会观察到此行为。所以This is a comment-->
就不复存在了。
这对我来说似乎完全没有意义。这有什么理由吗?
它发生在Linux 2.6.18上。 Distro是RHEL Server 5.10。
答案 0 :(得分:4)
因为strings
命令只打印长度为4个字符或更多的字符串。 -->
的长度为3,因此忽略它。您使用strings
?
手册页说:
对于给定的每个文件,GNU字符串打印至少4个字符长的可打印字符序列(或 使用下面的选项给出的数字),然后是一个不可打印的字符。默认情况下,它只打印 来自目标文件的初始化和加载部分的字符串;对于其他类型的文件,它从中打印字符串 整个文件。
字符串主要用于确定非文本文件的内容。