sed:复制直到并包括匹配的行,然后添加换行符

问题描述 投票:0回答:1

我有这个 sed 表达式:

sed -ne '1,/DO-NOT-TOUCH-BEGIN/p' filename.txt

这将输出每一行,直到包含 DO-NOT-TOUCH-BEGIN 的行。

如何修改此命令,以便它在 DO-NOT-TOUCH-BEGIN 之后附加换行符?

示例:

hello
there
DO-NOT-TOUCH-BEGIN
not
this
DO-NOT-TOUCH-END
extra
lines

变成:

hello
there
DO-NOT-TOUCH-BEGIN

DO-NOT-TOUCH-BEGIN 后面有一个空行

我也希望另一方有类似的东西,它在比赛前添加一个换行符。

sed -ne '/DO-NOT-TOUCH-END/,$p' filename.txt

所以输出应该是:


DO-NOT-TOUCH-END
extra
lines

DO-NOT-TOUCH-END 之前有一个空行。

sed
1个回答
0
投票

这可能对你有用(GNU sed):

sed '/DO-NOT-TOUCH-BEGIN/G' file

将保留空间附加到当前匹配的行,默认情况下为空,但会附加换行符。

操作前:

sed '/DO-NOT-TOUCH-END/H;//g' file

将当前行追加到保留空间,然后用保留空间的内容替换当前行。

© www.soinside.com 2019 - 2024. All rights reserved.