URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9846
[ Назад ]

Исходное сообщение
"Открыть файл, заменить в нужном месте, закрыть файл."

Отправлено YetAnotherStupidNickname , 21-Мрт-14 16:31 
Ребята, есть файл с множеством строчек, и одна из строчек содержит:
...
SomeParametr=http://192.168.1.1:12345
...

Требуется написать скрипт, который:
1. найдет строку с  SomeParametr
2. изменит IP адерс на нужный из переменной
3. закроет файл.

Спасибо.


Содержание

Сообщения в этом обсуждении
"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено я , 21-Мрт-14 16:53 
> Ребята, есть файл с множеством строчек, и одна из строчек содержит:
> ...
> SomeParametr=http://192.168.1.1:12345
> ...
> Требуется написать скрипт, который:
> 1. найдет строку с  SomeParametr
> 2. изменит IP адерс на нужный из переменной
> 3. закроет файл.
> Спасибо.

man sed


"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено YetAnotherStupidNickname , 21-Мрт-14 17:05 
> man sed

хочу python!


"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено parad , 21-Мрт-14 19:47 
поставь из портов.

"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено asavah , 21-Мрт-14 19:54 
только haskell || erlang
только hardcore



"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено Исходное сообщение , 22-Мрт-14 15:17 
> Требуется написать скрипт...

Деньги предлагаешь, что-ли? И сколько же?


"Открыть файл, заменить в нужном месте, закрыть файл."
Отправлено skb7 , 23-Мрт-14 01:33 
Никогда на Питоне не писал, но сделать такой скрипт заняло пару минут. Секрет в том, что гугл всё знает. По запросу "python regex file replace" первая же ссылка -- то что надо:

http://pythontesting.net/python/regex-search-replace-examples/

Сам скрипт:


#!/usr/bin/env python

import fileinput
import re

file_name = "some-file.txt"
param_key = "SomeParameter"
param_val = "http://10.10.1.1:2014"

rx_pattern = r"(" + param_key + r"\s*=\s*).*"
rx_repl = r"\1" + param_val

for line in fileinput.input(file_name, inplace=1):
    line = re.sub(rx_pattern, rx_repl, line.rstrip())
    print(line)