此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的《奥的sed
和awk
》。(
谢谢@Enlico。在不使用regex的情况下,我们可以很容易地使用tee来实现这一点。
sed '$ a\nline3nline4' abc.txt
解决问题
第1行
第2行
第3行
第4行