更改文件中的数据

时间:2015-05-18 14:49:00

标签: xml linux shell

我正在寻找一种方法来更改许多文件中的某些数据(更改xml编码)。有很多文件(超过1 000 000)。什么是最快的方式? Sed,grep,别的什么?感谢的!

变化:

<?xml version="1.0" encoding="ASCII"?>

到此:

<?xml version="1.0" encoding="UTF-8"?>

2 个答案:

答案 0 :(得分:0)

你可以使用sed。如果那是唯一的地方&#34; ASCII&#34;显示它很容易做到

sed -i -e 's/ASCII/UTF-8/' <file>

注意:没有参数的-i标志是GNU语法。此外,如果ASCII出现在您不想替换的任何地方,则必须使您的模式更具体。

这将为每个文件创建一个新的sed进程。因此,在性能方面,您可能会更好地尝试编写一个脚本来打开文件并进行更改而无需启动新进程。在python中,您可以编写一个函数来执行此操作,并使用os.walk导航目录结构以查找所需的文件。

答案 1 :(得分:0)

如果您想要完全匹配并替换,则:

sed -i -Ee 's/(<?xml version="1.0" encoding=")ASCII/\1UTF-8/' file

您可以在标记行中考虑多个空格或制表符,如下所示:

sed -i -Ee 's/(<?xml[ \t]+version="1.0"[ \t]+encoding=")ASCII/\1UTF-8/' file

我只考虑了xml version="1.0"version="1.0" encoding=...中的空格,我至少要制作一个空格...