Gnu sed 的“i text”和“i\ ....”命令之间有什么区别吗?

Gnu sed 的“i text”和“i\ ....”命令之间有什么区别吗?

以下是 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 扩展经常出现这种情况)。ised

标准i命令好像

i\
text

POSIX 对此进行了简洁的记录

将文本写入标准输出。

GNU为和命令sed提供了与 相同的语法便利性。以下内容来自有关该命令的文档(GNU版本 4.2.2):aciinfo sedased

作为 GNU 扩展,如果a和换行符之间存在除空白\序列之外的其他内容,则从 后的第一个非空白字符开始的该行文本a将被视为 TEXT 块的第一行。 (这可以简化单行添加脚本的编写。)此扩展还可以与ic命令一起使用。

这意味着这两个命令

i text

i\
text

在 GNU 中是相同的sed

相关内容