如何在 Gnu sed 中使用 a 和 i 命令使用 \n 添加换行符?

Jus*_*ner 2 sed

在下面的示例中,我可以使用文字换行符在 前后添加一个空行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:~#
Run Code Online (Sandbox Code Playgroud)

don*_*sti 5

如果你使用\n它会工作,但你会在命令之前和之后得到两个换行符,i\并且a\已经在打印模式空间之前和之后分别添加了一个换行符,所以

seq 5 | sed  -e '3i\\n' -e '3a\\n'
Run Code Online (Sandbox Code Playgroud)

印刷

1
2


3


4
5
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因,您希望它在一行中,您可以使用多个-expressions:

seq 5 | sed  -e '3{i\' -e '' -e 'a\' -e '' -e '}'
Run Code Online (Sandbox Code Playgroud)

尽管在这种情况下,仅使用保留空间更容易/更短:

 seq 5 | sed  '3{G;H;x;}'
Run Code Online (Sandbox Code Playgroud)