从bash中的xml文件中删除特定标签

时间:2019-02-10 09:59:04

标签: xml shell unix xml-parsing

我需要删除这样的字符串:

<test-test1 type:name="text.here"/>

来自.xml文件。

我尝试过,例如:

variable="<test-test1 type:name=\"text.here\"/>"
sed -i 's|${variable}||g' file.xml

但是它不起作用。

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:0)

我创建了一个Python脚本来为您执行此操作。 将内容复制到filename.py,应用sudo chmod +x filename.py并执行脚本。我假设您使用file1.xml作为XML文件。

#!/usr/bin/python
import re

your_content: "the words to replace the string"

# here we read the file in Python
fh = open("file1.xml", "r")
content = fh.read()

# Here we match the string, it matches content between  =name=" and \
m = re.sub(r'(?<=name=\")(.*)(?=\")', your_content, content)

print(m)

# now you probably want to write to the file
x = open("file1.xml", "w")
x.write(m)

注意,Python 3也可以。

答案 1 :(得分:0)

使用double-quotes for variables, not single-quotes

variable="<test-test1 type:name=\"text.here\"/>"
sed -i 's|'"${variable}"'||g' file.xml