使用 sed 的“a”命令为一行添加前缀是否可移植?

Wil*_*ard 5 sed posix portability

我注意到以下有趣的行为:

$ printf '%s\n' line{1..2} | sed $'1a\\\nPREFIX'
line1
PREFIXline2
$ 
Run Code Online (Sandbox Code Playgroud)

有趣的是,这种行为仅适​​用于 Sed 脚本中的最后一个命令,因为在之后放置另一个命令需要换行符。

它也适用于插入命令:

$ printf '%s\n' line{1..2} | sed $'1i\\\nPREFIX'
PREFIXline1
line2
$ 
Run Code Online (Sandbox Code Playgroud)

可以依赖这种行为吗?

我没有看到它在SedPOSIX 规范中以一种或另一种方式提及。它只是说text可能由一行或多行组成。(如果一行没有以换行符结尾,它仍然是一行吗?)

它还适用于多行插入:

$ printf '%s\n' line{1..2} | sed $'1a\\\n ****/\n1i\\\n/****\\\n * '
/****
* line1
****/
line2
$ 
Run Code Online (Sandbox Code Playgroud)