[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: regelparen verwijderen



Op 2014-03-02 om 16:22 schreef Geert Stappers:
> Op 2014-03-02 om 13:17 schreef Wouter Verhelst:
> > Op zondag 2 maart 2014 12:50:40 schreef Geert Stappers:
> > > 
> > > Dus dat "kopregels" met "Processing data recordnummer" niet getoond
> > > worden als de processing is mislukt. De regels met "Processing failed"
> > > zijn ook niet nodig.
> > > 
> > > Met sed en/of awk krijg ik het niet voormekaar.
> > 
> > Met awk zou dat toch moeten lukken, en is redelijk simpel:
> > 
       <knip/>
> > 
> > Wat mist nog: "Setup info" en "Final statistics". Dat lijkt een mooie oefening 
> > voor de lezer ;-)
> > 
> 
> Gelukt.

Nog bedankt voor de tip (en de uitdaging)


> #!/usr/bin/awk -f
> BEGIN {
> state = "loud";
> }

State machine krijgt zijn begin waarde


> /Processing data/{
>   header = $0 ; 
>   state = "silent" ;
> }

De header wordt bewaard


> !/Processing failed/ && state == "silent" && !/Processing data/ {

Niet de foutmelding, we zwijgen nog en niet een nieuwe header.

>   print header ;
>   state = "goloud" ;
> }

Eenmalig de bewaarde header afdrukken

> !/Processing failed/ && state == "goloud" && !/Processing data/ {
>   state = "loud" ;

Deel twee van het eenmalig afdrukken.

> }
> !/Processing failed/ && state == "loud" {
>   print $0 ; 

Andere regels dan "failed" afdrukken.


> }
> # l l
> 
> Toelichting in de follow up.

In de bijlage het awk script en test materiaal.
Doe er je voordeel mee.



Groeten
Geert Stappers
-- 
Leven en laten leven
#!/usr/bin/awk -f
BEGIN {
state = "loud";
}
/Processing data/{
  header = $0 ; 
  state = "silent" ;
}
!/Processing failed/ && state == "silent" && !/Processing data/ {
  print header ;
  state = "goloud" ;
}
!/Processing failed/ && state == "goloud" && !/Processing data/ {
  state = "loud" ;
}
!/Processing failed/ && state == "loud" {
  print $0 ; 
}
# l l
Setup info foo
Setup info bar
Processing data 4
Processing failed
Processing data 5
Result: asdfadfader
Result: asdfsdeweradf
Processing data 6
Processing failed
Processing data n+4
Result: asdfadf
Result: asdasferqwe
Result: askjkqerqr
Processing data n+5
Processing failed
Final statistics

Reply to: