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.

これら2つの文法の表現は非常に異なります。過去には構文だけ違って動作は同じだと思いました。多くの実験を行いましたが、すべてのテストで同じ結果が出ました。確認したいです。これら2つの構文の間に違いはありますか?よろしくお願いします。

答え1

この構文は、i textコマンドのPOSIX標準構文の拡張であり、便宜上提供されています(GNU拡張の場合によく発生します)。ised

標準iコマンド良い

i\
text

POSIXはこれを簡潔に文書化します。

標準出力にテキストを書き込みます。

GNUはコマンドとsed同じ構文の利便性を提供します。以下は、このコマンドのドキュメント(GNUバージョン4.2.2)からのものです。aciinfo sedased

GNU 拡張としてa改行文字の間に一連の空白以外のものがある場合、\その後の最初の空白以外の文字で始まるテキスト行はaTEXT ブロックの最初の行とみなされます。 (これは1行の追加スクリプトの作成を簡単にすることができます。)この拡張はiコマンドと一緒に使用することもできますc

つまり、これら2つのコマンドは

i text

そして

i\
text

GNUでも同様ですsed

関連情報