このコマンドはうまく動作します。
$ sed -e '/foo/{g; d}' myfile
しかし、ここにはバグがあります。
$ sed -e '/foo/{g; a bar}' myfile
sed: -e expression #1, char 0: unmatched `{'
何の問題がありますか?
答え1
a
のステートメントには、含まれているキャリッジリターン文字()ではなく、sed
実際の改行文字()が必要です。したがって、このステートメントを実際に機能させる唯一の方法は次のとおりです。Cntl-jCtrl-ma
sed '/foo/{g;a\
bar
}'
入力行の後に改行文字を追加する必要があります。複数行が必要な場合は、改行文字を引用してください。
sed '/foo/{g;a\
bar\
xyzzy
}'
sed
これはその根本に戻りますed
。