sed und fehlendes Newline am Zeilenende

18/01/2012 - 11:58 von Michael Baeuerle | Report spam
Hallo,

wie sollte sich denn ein sed korrekt verhalten wenn er eine Zeile ohne
Newline am Ende sieht (z.B. vor EOF oder wenn man den Inhalt einer
Variable hinein "piped")?

Fuer eine normale Substitution habe ich folgendes Verhalten:
Der NetBSD sed nimmt sie und fuegt im Output kein Newline an.
Der AIX sed nimmt sie nicht und erzeugt leeren Output.
Der Heirloom sed nimmt sie, fuegt aber im Output ein Newline an.

Die Beschreibung auf opengroup.org ist da sehr zurueckhaltend finde ich
...
Welches Verhalten ist "richtig" bzw. ist eines der 3 "kaputt"?


Micha
 

Lesen sie die antworten

#1 Juergen P. Meier
18/01/2012 - 12:27 | Warnen spam
Michael Baeuerle :
wie sollte sich denn ein sed korrekt verhalten wenn er eine Zeile ohne
Newline am Ende sieht (z.B. vor EOF oder wenn man den Inhalt einer
Variable hinein "piped")?



Undefiniert.

Fuer eine normale Substitution habe ich folgendes Verhalten:
Der NetBSD sed nimmt sie und fuegt im Output kein Newline an.



So wuerde ich das auch erwarten.

Der AIX sed nimmt sie nicht und erzeugt leeren Output.



Das halte ich fuer einen Fehler. Sed sollte bis zum NL /oder/ dem EOF
lesen und verarbeiten. Evtl. mal im Standard nachschauen, was der
dazu sagt.

Der Heirloom sed nimmt sie, fuegt aber im Output ein Newline an.



Da sed strenggenommen ein Zeilenweise arbeitender Stream-Texteditor
ist, ist das zumindest nicht falsch.

Die Beschreibung auf opengroup.org ist da sehr zurueckhaltend finde ich
...
Welches Verhalten ist "richtig" bzw. ist eines der 3 "kaputt"?



IMO: Nur 2 der Varianten sind nicht kaputt.

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)

Ähnliche fragen