Загрузите лог-файлы Sendmail в панды - PullRequest
0 голосов
/ 08 апреля 2019

Мне нужно проанализировать много длинных лог-файлов Sendmail, некоторые из них были сжаты, я пробую с пандами,

строки имеют формат:

    2019-02-04T17:41:06.957332-08:00 server1 sendmail[1945]: x151f6Ng001945: from=<xxxxxxxxx@domain1.com>, size=20946, class=0, nrcpts=1, msgid=<ZZZZZZZZZZZ>, proto=SMTP, daemon=MTA, tls_verify=NONE, auth=NONE, relay=server1 [127.0.0.1]
    2019-02-04T17:41:06.990091-08:00 server1 sendmail[1955]: x151f6Ng001945: to=<xxxxxxxxx@domain2.com>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, tls_verify=NONE, pri=140946, relay=server2. [IP_2], dsn=2.0.0, stat=Sent (Ok: queued as 43tnNL6jtyz6p3vf)

первые столбцыСервер даты разделен пробелом, но остальная часть строки разделена символом «,» (запятая), а число полей является переменным, моя идея состоит в том, чтобы разделить пробел в столбцах, а затем в последнем полепоиск определенного текста, создание новых столбцов,

Я пытаюсь с помощью sep=r',(?!\s)' не использовать запятую в качестве разделителя, но не работает

некоторые идеи

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

В конце я загружаю файл построчно в наборе данных и создаю новые столбцы, извлекающие нужные мне поля, что было проще, чем read_csv options

0 голосов
/ 09 апреля 2019

Один из подходов заключается в следующем: используйте sed в командной строке, чтобы разрезать данные на 5 столбцов.

sed -e s/" "/", "/1 test.txt | sed -e s/" "/", "/2 | sed -e s/" "/", "/3 | sed -e s/" "/", "/4 | sed -e s/" "/"\""/5 | sed -e s/$/\"/ > test_5cols.csv

Это ставит запятые в первые 4 пробела.Все остальные данные в 5-м столбце являются «смешанными» и расположены не в том же порядке.

2019-02-04T17:41:06.957332-08:00, server1, sendmail[1945]:, x151f6Ng001945:, from=<xxxxxxxxx@domain1.com>,"size=20946, class=0, nrcpts=1, msgid=<ZZZZZZZZZZZ>, proto=SMTP, daemon=MTA, tls_verify=NONE, auth=NONE, relay=server1 [127.0.0.1]"
2019-02-04T17:41:06.990091-08:00, server1, sendmail[1955]:, x151f6Ng001945:, to=<xxxxxxxxx@domain2.com>,"delay=00:00:00, xdelay=00:00:00, mailer=esmtp, tls_verify=NONE, pri=140946, relay=server2. [IP_2], dsn=2.0.0, stat=Sent (Ok: queued as 43tnNL6jtyz6p3vf)"

Затем вы можете использовать pandas read_csv, чтобы перетащить его в df, а затем переименовать столбцы.

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