Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 更改文件中的数据_Xml_Linux_Shell - Fatal编程技术网

Xml 更改文件中的数据

Xml 更改文件中的数据,xml,linux,shell,Xml,Linux,Shell,我正在寻找一种方法来更改许多文件中的一些数据(更改xml编码)。有很多文件(超过1000)。最快的方法是什么?塞德,格雷普,还有别的事吗?谢谢你 更改: <?xml version="1.0" encoding="ASCII"?> 为此: <?xml version="1.0" encoding="UTF-8"?> 您可以使用sed进行此操作。如果这是唯一显示“ASCII”的地方,那么就很容易做到 sed -i -e 's/ASCII/UTF-8/' <fi

我正在寻找一种方法来更改许多文件中的一些数据(更改xml编码)。有很多文件(超过1000)。最快的方法是什么?塞德,格雷普,还有别的事吗?谢谢你

更改:

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

为此:

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

您可以使用sed进行此操作。如果这是唯一显示“ASCII”的地方,那么就很容易做到

sed -i -e 's/ASCII/UTF-8/' <file>
sed-i-e's/ASCII/UTF-8/'
注意:不带参数的
-i
标志是GNU语法。此外,如果ASCII出现在您不想替换的任何地方,则必须使您的模式更加具体


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

如果您希望精确匹配并替换,则:

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

sed-i-Ee/(也只能指定第一行:
sed-i-e'1s/ASCII/UTF-8/”
sed -i -Ee 's/(<?xml[ \t]+version="1.0"[ \t]+encoding=")ASCII/\1UTF-8/' file