Мне нужна помощь в извлечении блоков текста из файла в отдельные файлы.
Пример:
ltm data-group internal /Common/www_web {
records {
/images { }
/images/ { }
/test/common/ { }
}
type string
}
ltm monitor http /Common/data {
adaptive disabled
defaults-from /Common/http
destination *:*
interval 1
ip-dscp 0
recv "\{\"status\":\"UP\""
recv-disable "\{\"status\":\"DOWN\""
send {}
time-until-up 0
timeout 4
}
ltm profile http /Common/stage {
adaptive disabled
defaults-from /Common/http
destination *:*
interval 5
ip-dscp 0
recv "\{\"status\":\"UP\""
recv-disable "\{\"status\":\"DOWN\""
send "GET /proxy/test HTTP/1.1\r\nHost: staging\r\nConnection: close\r\n\r\n"
time-until-up 0
timeout 16
}
Я хочу раздеть каждый блок и записать его в отдельный файл, например:
ltm data-group internal /Common/www_web {
records {
/images { }
/images/ { }
/test/common/ { }
}
type string
}
в отдельный файл.
ltm monitor http /Common/data {
adaptive disabled
defaults-from /Common/http
destination *:*
interval 1
ip-dscp 0
recv "\{\"status\":\"UP\""
recv-disable "\{\"status\":\"DOWN\""
send {}
time-until-up 0
timeout 4
}
и выше блок в отдельный блок и так далее. До сих пор я пытаюсь найти регулярное выражение для выполнения sh этого и вот мой код:
#!/usr/bin/python
import sys
import re
with open(sys.argv[1], 'r') as f:
contents = f.read()
regex = ur"(^ltm[\s\S]+^ltm)"
matches = re.search(regex, contents, re.MULTILINE)
if matches:
print ("{match}".format(start = matches.start(), end = matches.end(), match = matches.group()))
Пока что это регулярное выражение захватывает все с помощью текста 'ltm'. Любая помощь будет оценена.
Я посмотрел на это Извлечение блока текста из файла с использованием python, но в моем случае это мало помогло.