0

我有数千个格式不正确的 XML 文件要修补。

其中许多包含以下问题:(<someTag attr='text [< 99]'/>注意方括号中的左角)。

我想写一个 sed 表达式来替换 *.xml 的所有[<实例[&lt;

sed -n 19p myFile.xml<someTag attr='text [<99]'/>按预期返回。

echo '[<45' | sed -n '/\[</p'[<45按预期返回。

但是,sed -n '/\[</p' myFile.xml当对文件使用该表达式而不是回显时,显然我需要不同的语法。我需要使用什么语法?

另外,一旦我完成了这件事,我的计划就是做类似的事情

sed -i -n 's/correct expression/\[&lt;/g/p' *.xml针对所有文件中的所有匹配项运行它并输出新版本以帮助我调试。这看起来合理吗?

顺便说一句,sed 似乎是可以使用的工具,但我完全可以使用在 Linux 上运行的任何其他解决方案。

谢谢!

4

1 回答 1

0

但是,sed -n '/\[</p' myFile.xml当对文件使用该表达式而不是回显时,显然我需要不同的语法。

嗯,对我有用:

echo '[<45' > test.xml
sed -n '/\[</p' test.xml

返回[<45

也就是说,如果你想更换,做类似的事情

sed 's/\[</[\&lt;/g'

例如,要直接修改所有 xml 文件,请执行

sed -i 's/\[</[\&lt;/g' *.xml

(-i 开关用于直接修改文件;否则,它们的内容将被发送到标准输出)

这看起来合理吗?

当然,这就是 sed 的用途。

于 2013-02-21T20:12:57.907 回答