【发布时间】:2009-04-28 16:28:29
【问题描述】:
我正在尝试使用正则表达式修复一些双语 xml 文件,以匹配已知的错误内容模式并替换正确的值。 xml文件中的大部分问题都可以认为是拼写错误或冗余数据。
我确实有一个文本处理工具,它可以在没有任何正则表达式支持的软件中工作,但是如果我可以使用 sed 或类似的东西来编写批处理作业并让它过夜,那么整个情况会容易得多。 应该解决问题的示例 sed 脚本可能如下所示:
#!/bin/sed -f
s/<prop type="Att::Status">New/<prop type="Att::Status">Not Validated/g
s/<prop type="Att::Status">Approved/<prop type="Att::Status">Validated/g
....
我发现 sed 不太喜欢 UTF16 文件,而且由于我们正在处理 34 种不同语言组合的双语 xml,因此使用像 iconv 这样的工具来包装 sed 脚本可能非常危险。大多数字符集转换工具都会导致某种形式的损坏,我宁愿不花一周的时间来决定脚本在哪些语言上可以正常工作。
还值得一提的是,xml 中充满了过去几年客户积累的翻译,因此其中会有大量格式错误的语法,可能会导致一些工具出错。
所以总而言之,sed + iconv 风险太大,我有一个基本的全局文本替换工具,我有 Notepad++,我什至有一个 sed 语法中用于替换的表达式列表。但是有没有更简单/更好的方法?
【问题讨论】: