Toon posts:

[regex] multi-line regex'en

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een aardig groot bestand waar ik wat info uit moet filteren. Dat wil ik in linux met grep gaan doen, doormiddel van regular expressions. ('kweenie of ik hier goed zit)
De info in het bestand ongeveer zoiets als dit:
naam: Piet
leeftijd: 18
geslacht: Man
naam: Truus
leeftijd: 23
geslacht: Vrouw
naam: Miep
leeftijd: 15
geslacht: Vrouw

nu wil ik het zo controleren dat als "Vrouw" in een regel voor komt dat dan de regel 2 ervoor getoont word:
naam: Truus
naam: Miep

Dit werken met meerdere lijnen, is dat mogelijk met standaard regex regels (als er al een standaard bestaat) zodat ik dit in grep mee kan geven. Of moet hier echt een bash/perl scriptje voor geschreven worden.

de manual file van grep zegt er weinig over.

  • Grum
  • Registratie: Juni 2001
  • Niet online
kijk een naar awk

  • tomato
  • Registratie: November 1999
  • Niet online
(e)grep is line based, daar gaat dat dus niet mee...

Met Perl zou het zo kunnen:
code:
1
perl -e "while(<>){print $a if /Vrouw/;$a=$b;$b=$_}" bestand

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Op zaterdag 25 mei 2002 13:42 schreef tomato het volgende:
(e)grep is line based, daar gaat dat dus niet mee...

Met Perl zou het zo kunnen:
code:
1
perl -e "while(<>){print $a if /Vrouw/;$a=$b;$b=$_}" bestand
En dan komen er extra velden erbij, of worden velden gehusselt, of komen niet alle velden in dezelfde volgorde binnen.. (of heet er iemand "Vrouw" :+).

Awk zou hier dan toch een stuk beter op zijn plaats zijn (en ja, ik weet het: alles wat awk kan, kan perl ook) :)

Yo dawg, I heard you like posts so I posted below your post so you can post again.