如何用sed插入某物一次

如何用sed插入某物一次,sed,insert,multiline,Sed,Insert,Multiline,我试图用多行块I替换输入文件中的第一个空行。E出于 one two three four five six 我想创造 one two foo three four five six 为此,我尝试了这个sed脚本: sed '/^$/i\ \ foo' 但它在/每行/空行插入 如何调整对sed的调用,使其仅在第一次出现空行时插入?有没有办法告诉sedsed现在应该将其余的输入复制到输出 我不想切换到awk或其他shell工具,如循环中的read或类似工具。我只是对使用sed执行此任

我试图用多行块I替换输入文件中的第一个空行。E出于

one
two

three
four

five
six
我想创造

one
two

foo

three
four

five
six
为此,我尝试了这个
sed
脚本:

sed '/^$/i\
\
foo'
但它在/每行/空行插入

如何调整对
sed
的调用,使其仅在第一次出现空行时插入?有没有办法告诉sed
sed
现在应该将其余的输入复制到输出


我不想切换到
awk
或其他shell工具,如循环中的
read
或类似工具。我只是对使用
sed
执行此任务感兴趣。

我找到了一种方法,用
s
命令替换
I

sed '0,/^$/s//\
foo\
/'

但是我更喜欢使用
I
命令的解决方案,因为我在搜索后想做的事情可能不容易用
s
替换。我找到了一种方法,用
s
命令替换
I

sed '0,/^$/s//\
foo\
/'

但我更喜欢使用
I
命令的解决方案,因为搜索后我想做的事情可能不容易用
s
替换。您可以循环并打印行,直到文件结束:

sed '/^$/{i\
\
foo
:a;n;ba}' file

您可以循环并打印行,直到文件结束:

sed '/^$/{i\
\
foo
:a;n;ba}' file

(仅适用于Gnu版本的
sed
)(仅适用于Gnu版本的
sed