Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> I don't if the above behavior is forbidden by Posix;
POSIX isn't 100% clear on the subject, I'm afraid.
Anyway, thanks for reporting that. I installed the following to
try to document the issues you mentioned.
2006-08-14 Paul Eggert <[EMAIL PROTECTED]>
* doc/autoconf.texi (Limitations of Usual Tools): Document sed
problems with arg script text that doesn't end in newline, and
with '-e a...'. Problems reported by Ralf Wildenhues.
--- doc/autoconf.texi 10 Aug 2006 04:53:38 -0000 1.1066
+++ doc/autoconf.texi 14 Aug 2006 22:56:17 -0000 1.1068
@@ -13605,8 +13605,10 @@ $ @kbd{echo '1*23*4' | /usr/xpg4/bin/sed
x
@end example
-The @option{-e} option is portable.
-Some people prefer to use it:
+The @option{-e} option is portable, so long as its argument
+does not begin with @samp{a}, @samp{c}, or @samp{i}
+(as this runs afoul of a Tru64 5.1 bug).
+Some people prefer to use @samp{-e}:
@example
sed -e '@var{command-1}' \
@@ -13671,18 +13673,27 @@ Also note that Posix requires that the @
On the other hand, no white space is allowed between @samp{:} and the
subsequent label name.
-Some @command{sed} implementations (e.g., MacOS X 10.4, Solaris 10
+If a sed script is specified on the command line and ends in an
[EMAIL PROTECTED], @samp{c}, or @samp{i} command, the last line of inserted text
+should be followed by a newline. Otherwise some @command{sed}
+implementations (e.g., [EMAIL PROTECTED] 3.9) do not append a newline to the
+inserted text.
+
+Many @command{sed} implementations (e.g., MacOS X 10.4,
[EMAIL PROTECTED] 3.9, Solaris 10
@command{/usr/ucb/sed}) strip leading white space from the text of
@samp{a}, @samp{c}, and @samp{i} commands. Prepend a backslash to
work around this incompatibility with Posix:
@example
-$ @kbd{echo flushleft | sed -e 'a\}
[EMAIL PROTECTED] indented'}
+$ @kbd{echo flushleft | sed 'a\}
+> @kbd{ indented}
+> @kbd{'}
flushleft
indented
-$ @kbd{echo foo | sed -e 'a\}
[EMAIL PROTECTED] indented'}
+$ @kbd{echo foo | sed 'a\}
+> @kbd{\ indented}
+> @kbd{'}
flushleft
indented
@end example