Aus dem folgenden Beispiel Muster, möchte ich die ersten 3 Einträge in der Zeile auswählen.Regex Auswahl mehrerer Felder
Say:
- Zeitstempel
- Hostnamen
- 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?
Vielen Dank SWLim, es hat funktioniert. Ich habe die nicht-gierige Gefangennahme vergessen. –