2017-06-01 4 views
0

Dans l'exemple de modèle suivant, je souhaite sélectionner les trois premières entrées de la ligne.regex sélectionnant plusieurs champs

Dis:

  1. timestamp
  2. nom d'hôte
  3. le premier mot après le nom d'hôte

Exemple motif:

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

J'ai utilisé la regex suivante et cela a bien fonctionné.

REGEX 1 -^(?: [^ \ S] \ s) {1} ([^ \ s]) - pour sélectionner l'horodatage et le nom d'hôte. REGEX 2 -^(?: [^ \ S] * \ s) {2} ([^ \ s] \ w +) - pour sélectionner le mot après le nom d'hôte.

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

Mais le journal ci-dessus a créé le problème, car il est pas dans un format standard de syslog, il a choisi « hostd » comme le nom d'hôte.

Je voudrais avoir regex qui doit sélectionner les journaux qui a horodatage comme première entrée, nom d'hôte comme seconde entrée (il finit toujours avec.def.co.uk) et si elle satisfait à la fois puis sélectionnez la 3ème entrée .

Comment puis-je y parvenir?

Répondre

0

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

Décomposer:

  1. (\S+[^\s])\s capture à la date et l'horodatage, et laisser de l'espace après
  2. (\w+\.def.co.uk)\s capture seulement si elle contient something.def.co. uk, et laisser l'espace à nouveau
  3. (.+)? capturer sans gêne le premier mot (comme Suming mot signifie pas d'espace entre

EDIT:

Sauf si vous voulez aussi la date et l'heure d'être dans leurs propres groupes de capture, alors il devrait être like this:

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

Espérons que cela aide!

+0

Merci beaucoup SWLim, ça a marché. J'ai oublié la capture non gourmande. –