[linux] Re: awk helemaal gek geworden?

Daniel C. von Asmuth asmuth op bakunin.xs4all.nl
Di Jan 5 20:53:12 CET 2016


Aldus schreef hans paijmans op Tue, Jan 05, 2016 at 03:39:03PM +0100:
> 
> Ik dacht dat ik na dertig jaar alle rare streken van awk wel had gezien. 
> Niet dus.
> 
> Het volgende scriptje leest van een usb port,  bewerkt de regels en 
> schrijft ze weer weg.
> De regel die begint met 'for (a=0;a<=aantal;...' doet dat wegschrijven. 
> Zoals het scriptje
> hier staat, met " >> filenaam" weggecommentarieerd, zet de data in de 
> goede volgorde op het scherm. Als ik " >> filenaam" toevoeg, worden de 
> regels IN OMGEKEERDE VOLGORDE naar filenaam geschreven.
> 
> Veel krabben op het hoofd is het gevolg.
> 
> 
> awk '{
> if (substr($0,1,5)=="# Dat")
>     {
>     ident=substr($0,18);
>     filenaam="log_"ident
>     command="rm "filenaam
>     system(command);
>     }
> if (substr($0,1,5)!="# err") regel[aantal++]=$0;
> else
>     {
>     for (a=0;a<=aantal;a++) print regel[a]; # >> filenaam
>     print "logdata geschreven naar "filenaam
>     exit;
>     }
> 
> }' < $port

Dit vind ik een wat merkwaardig script; de uitvoer zal erg afhangen van
de invoer. Zo probeert het kennelijk naar $filenaam te schrijven wat 
alleen werkt als die variabele een waarde heeft gekregen, maar het
deel dat die variabele zet, verwijdert dan weer $filenaam.

Verder worden de regels in het array $regel meerdere keren weggeschreven 
naar de file, dus je kan dingen verwachten als:

Jantje zag eens pruimen hangen,
Jantje zag eens pruimen hangen
oh, als eieren zo groot.
Jantje zag eens pruimen hangen
oh, als eieren zo groot.
't Scheen dat Jantje zou gaan plukken,
Jantje zag eens pruimen hangen
oh, als eieren zo groot.
't Scheen dat Jantje zou gaan plukken,
schoon zijn vader 't hem verbood.

Voorstel (als de baas het goed vindt):
wij morgen samen AWK scriptje saneren
en u overmorgen mij helpen met Powershell script op Windows :-)

Met vriendelijke groet,



Daniel von Asmuth

--
	2016: 25 jaar Linux op de Desktop!





More information about the Linux mailing list