文件操作,找到一个单词和棘手的替换

时间:2010-02-22 09:49:33

标签: python file replace

我有类似这样的文件

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 个答案:

答案 0 :(得分: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以进行就地编辑。