Na dann versuchen wir das mal aufzulösen. Es sieht kryptisch aus, das gebe ich zu. Aber ein bisschen ist das auch gewollt.
Kann man auch in ein Skript packen. Das liefer ich vielleicht noch nach, wenn ich Zeit habe.Code:sed ':a;N;$!ba;s/\n/ /g'
Ansonsten folgenes:
- :a - Sprungmarke mit dem Namen a
- ; - Zeilenende
- N - schreibe nächste Zeile aus dem InputStream in den pattern space, siehe auch man sed
- ; - Zeilenende
- $ - lese nächste aus dem InputStream
- ! - Alle Zeilen ausschliesslich der in adresse (hier $) angegebenen
Zeilen.- ba - Branch to label; if label is omitted, branch to end of script. Jetzt geht man also wieder zu a.
- ; - Zeilenende
Bis hierher alles klar? Jetzt habe ich alles in einem einzigen Stream. Jetzt muss man nur mehr ersetzen.
Und zwar
s/ suche im pattern space nach dem zeichen \n
ersetze es durch ' '
/g ende
Aus man sed:
n N Read/append the next line of input into the pattern space.
$ Match the last line.
Im Tutorial auf Seite 24 werden die Adressräume halbwegs verständlich erklärt.
mfg, Christian
Geändert von Waxolunist (07-02-2007 um 15:57 Uhr)
Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
Straight through, ohne Umwege ans Ziel
Ich verneige mich in TIEFER Ehrfurcht!!!
Ich lerne gerade, daß ich sed noch nicht mal in Ansätzen richtig nutze
Und ich hielt mich für gut
Grüße, Florian
Danke für die Blumen.
Aber wie gesagt, das :a;N;$!ba; habe ich auch erst ergoogeln müssen. Weil vor allem das $! ist sehr mächtig, und dessen Mächtigkeit wird nur mehr von seiner Unverständlichkeit übertroffen
Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
Straight through, ohne Umwege ans Ziel
Lesezeichen