манипулировать файлами и найти слово и хитро заменить - PullRequest
1 голос
/ 22 февраля 2010

У меня есть файл что-то вроде этого

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 Ответ

2 голосов
/ 22 февраля 2010

в одну сторону

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 для редактирования на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...