文件操作、查找单词和复杂替换

1 投票
1 回答
508 浏览
提问于 2025-04-15 19:34

我有一个文件,内容大概是这样的:

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 就可以进行原地编辑。

撰写回答