文件操作、查找单词和复杂替换
我有一个文件,内容大概是这样的:
hostname ser1-xyz
myuser name
passwd secret
group 1234
hostname ser2-xyz
myuser name
passwd secret
group 2345
我需要找到名为“ser1-xyz”的主机第一次出现的那一行,然后把它改成“ser1”,并把它的组值加1。
所以最终的文件看起来应该是这样的:
hostname ser1
myuser name
passwd secret
group 1235
hostname ser2-xyz
myuser name
passwd secret
group 2345
目前我正在使用的代码可以把“ser1-xyz”改成“ser1”:
for line in fileinput.FileInput(fn,inplace=1):
line = line.replace(search,replace)
但是我该怎么把组值加1呢?
1 个回答
2
一种方法
import fileinput
f=0
for line in fileinput.input("file",inplace=0):
if "hostname" in line and "ser1-xyz" in line:
line=line.replace("ser1-xyz","ser1")
f=1
if f and "group" in line:
a=line.rstrip().split(" ")
a[-1]=str(int(a[-1])+1)
line=' '.join(a)
f=0
print line.rstrip()
输出结果
$ ./python.py
hostname ser1
myuser name
passwd secret
group 1235
hostname ser2-xyz
myuser name
passwd secret
group 2345
把 inplace=0
改成 inplace=1
就可以进行原地编辑。