Gnu sedでaコマンドとiコマンドを使用して\ nを使用して改行文字を追加するには?

Gnu sedでaコマンドとiコマンドを使用して\ nを使用して改行文字を追加するには?

次の例では、リテラル改行を使用する前後に空白行を追加できます3。代わりに使用できますか\n?私はGnu sed 4.5を使用しています。

root@u1804:~# seq 5 | sed -r -e '/3/{i\
> ' -e 'a\
> ' -e '}'
1
2

3

4
5
root@u1804:~#

ベストアンサー1

これはうまくいき\nますが、コマンドの前後に2つの改行文字があり、すでに印刷i\パターンa\スペースの前後に1つの改行文字があるため

seq 5 | sed  -e '3i\\n' -e '3a\\n'

印刷

1
2


3


4
5

何らかの理由で1行に表示するには、複数の-e式を使用できます。

seq 5 | sed  -e '3{i\' -e '' -e 'a\' -e '' -e '}'

この場合、予約済みスペースを使用する方が簡単で短いです。

 seq 5 | sed  '3{G;H;x;}'

おすすめ記事