Мне нужно исправить несколько записей в нескольких строках, в настоящее время использующих perl, но мне нужно переместить функциональность на python.python fix многострочные записи журнала
Пример записи многоканальная линия:
2015-12-02T17:56:13.783276Z our-elb-prod 52.20.50.51:60944 10.30.0.32:80 0.000024 0.063357 0.000066 200 200 0 12164 "GET http://www.example.com:80/episodes/2014/10/ HTTP/1.0" "IgnitionOneBot/Nutch-1.9 (
This is the IgnitionOne Company Bot for Web Crawling.
IgnitionOne Company Site: http://www.example.com/
;
rong2 dot huang at ignitionone dot com
)" - -
Текущий скрипт на Perl, чтобы исправить это является:
while (my $row = <$fh>) {
chomp $row;
if ($row =~ /^(\d{4})-(\d\d)-(\d\d)T(\d)/) {
print "\n" if $. != 1;
}
print $row;
который выводит скорректированный одну запись строки:
2015-12-02T17:56:13.783276Z telepictures-elb-prod 52.20.50.51:60944 10.30.0.32:80 0.000024 0.063357 0.000066 200 200 0 12164 "GET http://www.example.com:80/episodes/2014/10/ HTTP/1.0" "IgnitionOneBot/Nutch-1.9 ( This is the IgnitionOne Company Bot for Web Crawling. IgnitionOne Company Site: http://www.example.com/ ; rong2 dot huang at ignitionone dot com )" - -
Таким образом, в двух словах мы в основном ищем любые строки, которые не начинаются с регулярного выражения даты, если они совпадают, мы добавляем t подойдите к первой строке без \ n.
Я видел другие способы достижения этого с помощью awk и т. Д., Но для этого нужно быть чистым питоном. Я посмотрел на Python. Join specific lines on 1 line, похоже, что itertools может быть предпочтительным способом?
Благодаря Авинаш! отлично подходит для того, что я искал. – user129545