sed - 在一个 sed 脚本中多次传递同一个文件

sed - 在一个 sed 脚本中多次传递同一个文件

在 sed 文档中,我们读到“sed 的工作原理是仅对输入进行一次传递”。

我想编写一个 sed 脚本(像这样运行:)sed -f my_script.sed,它执行多个操作,包括脚本中先前执行的操作。

是否可以对编辑后的流内容执行第二次(或第n次)传递?

例如:

  • 初始流内容:

titi

  • 第一次通过后流内容:
/titi/ i (
/titi/ a )
$ cat test.txt
(
titi
)
  • 又经过一次:
s/(/{/g
s/)/}/g

我希望输出是

$ cat test.txt
{
titi
}

这只是一个示例,表明我想执行对单个.sed脚本内的先前命令有影响的流版本。

答案1

sed只获得一次输入流传递。这在手册页中有明确说明(至少在 Fedora 33 上是这样)。

每当我必须做这样的事情时,我都会将 的输出通过管道传输到 的sed第二个实例中以sed进行后续编辑。

相关内容