希望有人可以提供帮助;
我有一个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所需的字符串,但是我不确定这是否是最好的方法?
任何提示或指针,将不胜感激。
谢谢C
假设<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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句