将目录和所有子目录中的所有Xml文件的Xml属性值替换为filename



有一个问题要问你们所有的sed | find | xmllint | xargs专家:

我需要一个脚本来替换Xml属性someXmlTag的值对于目录(及其子目录(中的所有*.xml文件文件名(无扩展名(

奖金分配:对于目录(和子目录(中的所有*.Xml文件,我需要一个脚本将Xml标记的值替换为文件名的第一部分(在分隔符之前(,并将Xml标签的值替换为由文件名的第二部分(在定界符之后(

提前感谢,非常感谢您的帮助!

问候,

Sebastian

您还没有提供任何示例、测试用例。无论如何,这个find/xargs/sed将在当前目录中查找所有带有.xml后缀的文件,并在<xmlTag></xmlTag>内部替换为<newTag></newTag>:

find ./ -type f -name "*.xml" -print0 | xargs -0 sed -i 's/(</{,1})xmlTag/1newTag/g'

测试:

$ cat file.xml
<xmlTag>
</xmlTag>
<xmlTag>Whats up</xmlTag>
$ sed 's/(</{,1})xmlTag/1newTag/g' file.xml
<newTag>
</newTag>
<newTag>Whats up</newTag>

最新更新