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

Re: [OT] Regular expression



Hallo David!

David Haller schrieb am Mittwoch, den 10. Januar 2007:
> Am Die, 09 Jan 2007, Christian Brabandt schrieb:
>>Wobei mein erstes Testscript so aussah:
>>,----
>>| { if($0~"2006$"){
>>|     getline nextline
>>|     $0=$0 nextline
>>|     }
>>| print $0
>>| }
>>`----
> 
> Aber wohl anders als von dir gedacht ;)
> 
> Zeile 1:
>     - Muster ("leer") passt. Block wird ausgeführt.
>     - if-Bedingung passt (im Ggs. zur Bedingung '/2006\n/')
>     - lies Zeile 2 in 'nextline', wobei durch getline der globale
>       "Zeiger" zur naechsten Zeile (3) wandert (s.u.)
>     - haenge nextline (ohne Umbruch) an Zeile 1 (in $0) an
>     - gebe $0 (Zeile 1+2) aus
> Zeile 3: (die wg. dem getline von Zeile 2 dran ist)
>     - dito

So hatte ich das gedacht, ja.

>
> Warum hast du überhaupt mit dem leeren Muster angefangen...? ;)

Ich war nicht sicher, welches die nächste Zeile ist, wenn ich
auf /2006$/ selektiere, (also ist das die nächste Zeile des Inputs
oder die nächste Zeile, die durch /2006$/ selektiert wird).

Und natürlich typischer Fall von Worked for Me. 

Und hey, ich habe nicht behauptet, dass meine Lösung elegant wäre. Ich
wollte nur selber etwas über awk lernen. Das ist Dir gelungen. ;)

> 
> Bei sed gilt übrigens ähnliches bzgl. Adressierung.
> 
> $ echo 'bla 2006
> , 123, 45
> bla
> blubb; 2006
> , 97, asd
> ' | sed -n '/2006$/{N;s/2006\
> /2006/;};p'
> 

Die Lösung kommt mir bekannt vor ;)

Grüße,
Christian
-- 
hundred-and-one symptoms of being an internet addict:
62. If your doorbell rings, you think hat new mail has arrived.  And then
    you're disappointed that it's only someone at the door.



Reply to: