为什么Unix"字符串"命令删除XML注释关闭标签?

时间:2014-09-14 00:35:31

标签: linux shell unix

我不是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。

1 个答案:

答案 0 :(得分:4)

因为strings命令只打印长度为4个字符或更多的字符串。 -->的长度为3,因此忽略它。您使用strings

处理文件的任何原因

手册页说:

  

对于给定的每个文件,GNU字符串打印至少4个字符长的可打印字符序列(或          使用下面的选项给出的数字),然后是一个不可打印的字符。默认情况下,它只打印          来自目标文件的初始化和加载部分的字符串;对于其他类型的文件,它从中打印字符串          整个文件。

     

字符串主要用于确定非文本文件的内容。