以下は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拡張の場合によく発生します)。i
sed
標準i
コマンド良い
i\
text
POSIXはこれを簡潔に文書化します。
標準出力にテキストを書き込みます。
GNUはコマンドとsed
同じ構文の利便性を提供します。以下は、このコマンドのドキュメント(GNUバージョン4.2.2)からのものです。a
c
i
info sed
a
sed
GNU 拡張として
a
改行文字の間に一連の空白以外のものがある場合、\
その後の最初の空白以外の文字で始まるテキスト行はa
TEXT ブロックの最初の行とみなされます。 (これは1行の追加スクリプトの作成を簡単にすることができます。)この拡張はi
コマンドと一緒に使用することもできますc
。
つまり、これら2つのコマンドは
i text
そして
i\
text
GNUでも同様ですsed
。