使用sed在EOF处添加空行

使用sed在EOF处添加空行,sed,escaping,line-breaks,Sed,Escaping,Line Breaks,此sed命令在abc.txt line 1 line 2 line 3 line 4 sed'$aline3\nline4'abc.txt line 1 line 2 line 3 line 4 但是想在添加两行之前添加一个空行 line 1 line 2 line 3 line 4 如此努力 sed'$a\nline3\nline4'abc.txt line 1 line 2 line 3 line 4 反而得到 line 1 line 2 nline 3 line 4 请告知您需

此sed命令在
abc.txt

line 1
line 2
line 3
line 4
sed'$aline3\nline4'abc.txt

line 1
line 2
line 3
line 4
但是想在添加两行之前添加一个空行

line 1
line 2

line 3
line 4
如此努力

sed'$a\nline3\nline4'abc.txt

line 1
line 2
line 3
line 4
反而得到

line 1
line 2
nline 3
line 4

请告知

您需要另一个
\

printf'line1\nline2'| sed'$a\\nline3\nline4'
它在GNU sed 4.8上工作

查看
mansed
并在其中搜索
Append
,第一个结果如下

a\
文本追加文本,每个嵌入的换行符前面都有一个反斜杠。
您案例的缺点在于,您正在将
文本
写入与命令
a
相同的行中,这在GNU sed中是允许的,但在POSIX sed中是不允许的,因此前导的
\
被解释为多行脚本中
a
之后需要的反斜杠


POSIX sed会导致代码出错,因为要求
文本
必须在下一行,并且必须在
文本
之前放置的换行符必须用
\
转义。(参考:)

谢谢@Enlico。我们可以很容易地使用tee而不使用regex

sed'$a\\nline3\nline4'abc.txt

line 1
line 2
line 3
line 4
解决了这个问题

第1行
第2行

第3行
第4行