以下是 Gnu sed 文档的摘录:https://www.gnu.org/software/sed/manual/sed.html
i text
insert text before a line. This is a GNU extension to the
standard i command - see below for details.
i\
text
Immediately output the lines of text which follow this command.
这两种语法的措辞有很大不同。过去,我认为它们具有完全相同的行为,只是语法不同。我做了很多实验,所有测试都给出了相同的结果。我想确认一下,这两种语法有什么区别吗?提前致谢。
答案1
该语法是中命令i text
的 POSIX 标准语法的扩展,为方便起见而提供(GNU 扩展经常出现这种情况)。i
sed
标准i
命令好像
i\
text
POSIX 对此进行了简洁的记录
将文本写入标准输出。
GNU为和命令sed
提供了与 相同的语法便利性。以下内容来自有关该命令的文档(GNU版本 4.2.2):a
c
i
info sed
a
sed
作为 GNU 扩展,如果
a
和换行符之间存在除空白\
序列之外的其他内容,则从 后的第一个非空白字符开始的该行文本a
将被视为 TEXT 块的第一行。 (这可以简化单行添加脚本的编写。)此扩展还可以与i
和c
命令一起使用。
这意味着这两个命令
i text
和
i\
text
在 GNU 中是相同的sed
。