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

Re: [OT] Regular expression



On Tuesday 09 January 2007 19:50, Christian Brabandt wrote:
> On Di, Januar 9, 2007 11:29, Gebhard Dettmar wrote:
> > On Tuesday 09 January 2007 01:46, David Haller wrote:
> >> Komplizierter als nötig ;) Du kannst direkt in der Adresse
> >> selektieren. Du verwendest das leere Muster, d.h. der Block wird
> >> auf jede Zeile angewendet.
> >
> > Verstehe ich nicht: liegt es nicht daran, dass if($0~"2006\n") nichts
> > matcht?
>
> Der Unterschied ist, dass ich mit meinem Script wirklich jede Zeile
> anschaue und mit der if-Abfrage mich auf das Muster "2006\n"
> beschränke, während David gleich mit dem Muster 2006$ nur die in Frage
> kommenden Zeilen bearbeitet und nur dann sich noch die nächste
> Eingabezeile holt.
>
Ja, aber es matcht nicht. Genauso wenig, wie /2006\n/, im Ggs. zu /2006$/
Versteh ich auch nicht ganz. Muss was mit der zeilenweisen Orientierung zu 
tun haben

> > Das hab ich auch nicht kapiert, wie man das Newline da reinbringt:
> > ich hab in der Manpage nach Substitution geguckt und sub(r,s) und
> > gsub(r,s) gefunden -
> > awk '{ gsub(2006\n, "2006") ; print }' <datei>
> > bringt: 1: unexpected character '\' Heißt das, dass es mit direktem
> > Replacement nicht geht (also Newline mit 2006)?
>
> Ich verstehe das so, dass awk immer zeilenweise arbeitet, ähnlich sed,
> weshalb die Ersetzung mit "\n" nicht funktioniert.
> Außerdem müsste es wohl gsub("2006\n", "2006") heißen.
>
Genau, bzw. sie funktioniert erst, wie ich grad in der Mail von David las, 
wenn man die nächste Zeile einliest.
Gruß Gebhard



Reply to: