2017-06-01 4 views
0

Aus dem folgenden Beispiel Muster, möchte ich die ersten 3 Einträge in der Zeile auswählen.Regex Auswahl mehrerer Felder

Say:

  1. Zeitstempel
  2. Hostnamen
  3. das erste Wort nach dem Hostnamen

Beispielmuster:

2017-04-24T09:20:01.687387+00:00 aabvabcw74.def.co.uk hostd-probe: lacp: DEBUG]:147, Recv signal 15, LACP service is about to stop

2017-04-24T09:20:01.687387+00:00 aacdefabcw74.def.co.uk hostd-probe: lacp: DEBUG]:147, Recv signal 15, LACP service is about to stop

Ich habe folgende Regex verwendet und es hat gut funktioniert.

REGEX 1 -^(?: [^ \ S] \ s) {1} ([^ \ s]) - um den Zeitstempel und den Hostnamen auszuwählen. REGEX 2 -^(?: [^ \ S] * \ s) {2} ([^ \ s] \ w +) - um das Wort nach dem Hostnamen auszuwählen.

2017-04-24T09:20:01.687387+00:00 hostd probing is done Fdm: sslThumbprint>95:43:64:71:A3:60:D8:17:C8:6F:68:83:92:CE:E4:3B:53:4E:1D:AD10.199.6.5a2:0e:09:01:0a:00a2:0e:09:01:0b:01/vmfs/volumes/b01f388c-aaa4889f/vmfs/volumes/6ad2d8d7-86746df14435.5.03568722host-619286aabvabcs16.def.co.uk

Aber das obige Protokoll hat das Problem geschaffen, da es nicht in einem Standard-syslog-Format ist es „hostd“ als Hostnamen ausgewählt hat.

Ich hätte gerne Regex, die die Protokolle auswählen müssen, die Timestamp als den ersten Eintrag hat, Hostname als zweiten Eintrag (es endet immer mit.def.co.uk) und wenn beide erfüllt dann wählen Sie den 3. Eintrag .

Wie kann ich das erreichen?

Antwort

0

^(\S+[^\s])\s(\w+\.def.co.uk)\s(.+?)\sDemo

Pause nach unten:

  1. (\S+[^\s])\s capture aus Datum und Zeitstempel und den Raum verlassen, nachdem es
  2. (\w+\.def.co.uk)\s Erfassung nur dann, wenn es something.def.co enthält. uk, und lassen Sie den Raum wieder frei
  3. (.+)? nicht gierig erfassen das erste Wort (als Wort Suming bedeutet, dass kein Raum zwischen

EDIT:

Sofern Sie auch das Datum und die Zeit wollen in ihren eigenen Einfanggruppen zu sein, dann sollte es like this sein:

^(\S+)(T\S+)\s(\w+\.def.co.uk)\s(.+?)\s

Hoffe, das hilft!

+0

Vielen Dank SWLim, es hat funktioniert. Ich habe die nicht-gierige Gefangennahme vergessen. –

Verwandte Themen