希望有人可以提供协助;
我有一个xml文件,我想在其中搜索特定的字符串,然后在每次找到匹配项时替换为不同的文本。例如,我需要在xml文件中搜索机器标签的所有内容,因此结果看起来类似于;
...
<machine>devbox1.mydomain.com</machine>
...
<machine>devbox2.mydomain.com</machine>
...
<machine>devbox1.mydomain.com</machine>
...
<machine>devbox2.mydomain.com</machine>
...
<machine>devbox1.mydomain.com</machine>
...
...
我现在有4个新系统,我需要将每个devbox *替换为最终类似的东西;
...
<machine>newbox1.mydomain.com</machine>
...
<machine>newbox2.mydomain.com</machine>
...
<machine>newbox3.mydomain.com</machine>
...
<machine>newbox4.mydomain.com</machine>
...
<machine>newbox1.mydomain.com</machine>
...
...
我已经以bash脚本的形式进行了初步尝试,通过构建一个while循环来读取每一行并grep查找所需的字符串,但我不确定这是否是最好的方法呢?
任何提示或指示都将不胜感激。
由于 ç
答案 0 :(得分:0)
假设每行不能有多个<machine>
标记(或者至少不超过一个要替换的标记),这个Python脚本应该可以完成这项工作:
#!/usr/bin/env python
import sys
import re
from itertools import cycle
regex = re.compile('^(.*<machine>)devbox\d+(\.mydomain\.com</machine>.*)$')
box = cycle([1, 2, 3, 4])
for l in sys.stdin:
m = regex.match(l)
if m:
l = m.group(1) + 'newbox' + str(next(box)) + m.group(2)
print(l)
将其保存到文件(例如newboxer.py
)并生成可执行文件,然后您可以使用:
> ./newboxer.py < input.xml > output.xml