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

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: