linux sed c命令和完整捕获组

0ejtzxu1  于 2023-05-06  发布在  Linux
关注(0)|答案(1)|浏览(188)

我已经通读了几十个sed问题,没有一个与我想做的事情有关。我正在使用sed c命令来匹配文件中的多行,但我需要两个部分之间的内容。

a
begin
c

d

end
f
...

在这个例子中,我需要捕获两行cd,并删除它们之间的新行,并在输出中使用它们,但是我没有尝试或找到任何东西允许我从match表达式中捕获。
使用一些包含\1的伪代码作为捕获组输出:

cat file | sed -e '/begin/,/end/c\begin\n\1\nend'

这应该会产生

a
begin
c
d
end
f
...

我不知道sed是否适合这项工作,但它可能只是用例之外的一步。我愿意接受其他选择。

wz3gfoph

wz3gfoph1#

一种办法是:

sed '/begin/,/end/{ /^$/d; }' file

相关问题