使用sed在EOF处添加空行



此sed命令将2行附加到abc.txt

sed '$ aline3nline4' abc.txt

line 1
line 2
line 3
line 4

但是想在添加2行之前添加一个空行,就像这个

line 1
line 2
line 3
line 4

所以尝试

sed '$ anline3nline4' abc.txt

而是得到

line 1
line 2
nline 3
line 4

请告知

您需要另一个:

printf 'line1nline2' | sed '$ a\nline3nline4'

它在GNU sed 4.8上运行。

查看man sed并在其中搜索Append,第一个结果为

a 
text   Append text, which has each embedded newline preceded by a backslash.

这种情况的弱点在于,您在与命令a相同的行上编写text,这在GNU sed中是允许的,但在POSIX sed中是不允许的,因此前导被解释为多行脚本中a之后所需的反斜杠。

您的代码在使用POSIX sed时会出错,因为要求text必须在下一行上,并且必须使用转义必须放在text之前的换行符。(参考:Dale Dougherty和Arnold Robbins的《奥的sedawk》。(

谢谢@Enlico。在不使用regex的情况下,我们可以很容易地使用tee来实现这一点。

sed '$ a\nline3nline4' abc.txt

解决问题

第1行
第2行

第3行
第4行

最新更新