Helmut Schneider <
jump...@gmx.de>:
>> >> $ echo "Zeile ganz oben" | sed '1i\
>> >> Zeile ganz oben
>> >> '
>> >
>> > Das ist leider alles andere als portabel.
>>
>> Was bitteschᅵn ist daran nicht portabel?
Der Linefeed. Verschiedene sed reagieren subtil anders darauf.
> Stimmt, portable war nicht das Problem.
Probier es doch mal mit verschiedenen sed implementierungen aus.
> [helmut@BSDHelmut ~]$ echo "Zeile ganz oben" | sed '1i\
> Zeile ganz oben
>
>
>
>
> '
> Zeile ganz oben
> Zeile ganz oben
> [helmut@BSDHelmut ~]$
>
> Das war das Problem...
>
> Als "Workaround" hatte ich dann gefunden:
>
> echo "one,two,three" | sed "s/,/\\`echo -e '\n\r'`/g"
echo -e?
Also wenn du schon Toolchest-Proprietaer programmierst, dann kannst du
auch GNU sed in ganz bestimmten Versionen nutzen, die kennen dann \n
Nativ als Zeilenvorschubzeichencode (anstatt es als Literal 'n' zu
interpretieren - wie alle anderen sed-Implementierungen sowie einige
Versionen von GNU sed) interpretiert wird.
> Aber dann kam wieder die dash:
>
> $ echo "one,two,three" | sed "s/,/\\`echo -e '\n\r'`/g"
> sed: -e expression #1, char 8: unterminated `s' command
> $
Ach.
'echo' ist idR nunmal ein Shell-Builtin und du darfst hoechstens mit
UNIX Standardkonformitaet rechnen, was die Optionen angeht.
Aber sed ist ja uach nicht das geeignete Werkzeug, um Mehrzeilige
Operationen an Texten zu machen.
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)