如何用 sed 一次性插入某物
How to insert sth with sed just once
我正在尝试用多行块替换输入文件中的第一个空行,即。 e.来自
one
two
three
four
five
six
我要创作
one
two
foo
three
four
five
six
为此,我尝试了这个 sed
脚本:
sed '/^$/i\
\
foo'
但是它在 /each/ 空行处插入。
如何调整对 sed
的调用,使其仅在第一次出现空行时插入?有没有办法告诉 sed
现在剩下的输入应该只复制到输出?
我不想切换到 awk
或其他 shell 工具,例如循环或类似的 read
。我只是对使用 sed
完成这项任务感兴趣。
我找到了一种方法,将 i
替换为 s
命令:
sed '0,/^$/s//\
foo\
/'
但我更喜欢使用 i
命令的解决方案,因为并不是我在搜索后想做的所有事情都可以很容易地用 s
.
替换
您可以循环打印行直到文件末尾:
sed '/^$/{i\
\
foo
:a;n;ba}' file
我正在尝试用多行块替换输入文件中的第一个空行,即。 e.来自
one
two
three
four
five
six
我要创作
one
two
foo
three
four
five
six
为此,我尝试了这个 sed
脚本:
sed '/^$/i\
\
foo'
但是它在 /each/ 空行处插入。
如何调整对 sed
的调用,使其仅在第一次出现空行时插入?有没有办法告诉 sed
现在剩下的输入应该只复制到输出?
我不想切换到 awk
或其他 shell 工具,例如循环或类似的 read
。我只是对使用 sed
完成这项任务感兴趣。
我找到了一种方法,将 i
替换为 s
命令:
sed '0,/^$/s//\
foo\
/'
但我更喜欢使用 i
命令的解决方案,因为并不是我在搜索后想做的所有事情都可以很容易地用 s
.
您可以循环打印行直到文件末尾:
sed '/^$/{i\
\
foo
:a;n;ba}' file