Po dość długiej przerwie wpadłem z pytaniem za które z pewnością zaraz dostanę po głowie ale niech tam

Otóż chciałbym sobie wyciągać pewne dane z logów czytając linią po linii. Samo czytanie nie nastręcza żadnych problemów, jednak gdy przychodzi do dzielenia łańcucha ....
.... tu zaczynają się schodki, pewnie dlatego, że powinienem się za to wziąć już dawno temu ale jakoś tak wyszło .... że zajmowałem się innymi rzeczami a te ważne leżały "na półce".
Ale do rzeczy, w każdej linii mam różne sekcje, posłużę się przykładem:
2017-03-12 03:22:01,957 fail2ban.server [15071]: INFO rollover performed on /var/log/fail2ban.log
2017-03-18 12:42:38,575 fail2ban.filter [14691]: INFO [sshd] Found 95.68.146.94
2017-03-18 13:52:21,277 fail2ban.filter [14691]: INFO [sshd] Found 94.50.247.182
2017-03-18 13:52:23,864 fail2ban.filter [14691]: INFO [sshd] Found 94.50.247.182
2017-03-18 13:52:24,170 fail2ban.actions [14691]: NOTICE [sshd] Ban 94.50.247.182
2017-03-18 13:52:26,355 fail2ban.filter [14691]: INFO [sshd] Found 94.50.247.182
2017-03-18 14:07:57,173 fail2ban.filter [14691]: WARNING Determined IP using DNS Lookup: 1-34-200-253.hinet-ip.hinet.net = ['1.34.200.253']
2017-03-18 14:07:57,174 fail2ban.filter [14691]: INFO [sshd] Found 1.34.200.253
2017-03-18 14:07:59,521 fail2ban.filter [14691]: INFO [sshd] Found 1.34.200.253
2017-03-18 14:07:59,848 fail2ban.actions [14691]: NOTICE [sshd] Ban 1.34.200.253
2017-03-18 14:08:01,844 fail2ban.filter [14691]: INFO [sshd] Found 1.34.200.253
2017-03-18 16:35:53,379 fail2ban.filter [14691]: INFO [sshd] Found 123.169.205.199
2017-03-18 16:35:54,980 fail2ban.filter [14691]: INFO [sshd] Found 123.169.205.199
2017-03-18 16:35:55,618 fail2ban.actions [14691]: NOTICE [sshd] Ban 123.169.205.199
mniej więcej takie coś.
[edyta]Jak widać nie wszystkie linie są tak samo zorganizowane ale wybieram tylko te gdzie wykonana została akcja "Ban" i tylko te rozbijam po czym zapisuję do bazy.
Mógłbym sobie policzyć ile każdy segment średnio zajmuje i potem dzielić string na kawałki ale to chyba nie najlepszy pomysł szczególnie, że te "segmenty" nie są tej samej długości a co za tym idzie .... mogą się pojawić błędy. Chyba, że ustawię np pierwszych kilka których długość się nie zmienia a resztę ile wlezie do końca linii.
Nie sądzę jednak aby to miało sens, dlatego pytam, jak to zrobić, żeby za każdym razem linia była dzielona tak samo ?
Druga część pytania: mogę sobie wstaić jakiś delimiter (zamiast spacji) ale jak zauważyliście miejscami spacji jest kilka, nie byłoby problemu gdyby każdy segment oddzielony był jedną ....
Podpowiedzcie proszę, jak?
Pozdrawiam
amator