Re: sed ; in \n ersetzen
Bertram Scharpf <b.scharpf@tesionmail.de> writes:
> Daß GNU sed 3.02 keine Escape-Sequenzen kann ist erbärmlich
> und zurecht behoben worden. Dennoch meine ich, es
> widerspricht der sed-Philosophie, explizit Umbruchzeichen
> anzugeben.
Ich weiß nicht, woher du deine Kenntnisse der sed-Pholisophie hast.
SUSv3 und POSIX sind jedenfalls gar nicht deiner Ansicht:
[SUSv3:]
| The replacement string [...] The meaning of a '\' immediately
| followed by any character other than '&' , '\' , a digit, or the
| delimiter character used for this command, is unspecified.
Deine nicht-erbärmliche Version ist also genau genommen undefiniertes
Verhalten. Und weiter:
| A line can be split by substituting a <newline> into it. The
| application shall escape the <newline> in the replacement by preceding
| it by a backslash.
Dort ist also eindeutig das festgeschrieben, was für dich erbärmlich
und philosophiewidrig ist.
> Von den Erfindern favorisiert wäre sicherlich so
> eine Lösung:
>
> $ echo 'a;b;c;d' | sed ':l;/;/{h;s/;.*//;p;g;s/[^;]*;//;b l;}'
>
> Ich gebe zu, das ist nicht jedermanns Geschmack.
Erm..
Gruß,
Heike
Reply to: