如何使用 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它,它会起作用,但您最终会在命令之前和之后有两个换行符,i\并且a\已经在打印模式空间之前和之后分别添加一个换行符,所以

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

印刷

1
2


3


4
5

如果出于某种原因,您希望将其放在一行中,则可以使用多个-e表达式:

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

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

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

相关内容