匹配后删除行 x

Kid*_*rla 3 sed

如何sed在匹配后删除两行(或任何数字)但不包括匹配和中间的行?

例如:

Enter command below
> login
Command valid
Enter your password at the below prompt
Remember to make sure no-one is looking at your screen
> mysecretword
Password accepted
Run Code Online (Sandbox Code Playgroud)

我只想删除“> mysecretword”行,因为它是“在下面的提示下输入您的密码”行之后的两行。我不能使用绝对行号位置,因为匹配可以在文件开始后出现任意数量的行。

在线搜索我找到了很多解决方案,例如sed '/Enter your password.*/,+3d' filex,但这也会删除“输入您的密码...”行和以下行,这不是我想要的。我只想删除一行,这是匹配后一定数量的行。

我如何使用sed(或实际上任何其他常用工具)来做到这一点?

ste*_*ver 6

也许

sed '/^Enter your password/ {
n
n
d
}' file
Run Code Online (Sandbox Code Playgroud)

或等效地:

$ sed '/^Enter your password/ {n;n;d;}' file
Enter command below
> login
Command valid
Enter your password at the below prompt
Remember to make sure no-one is looking at your screen
Password accepted
Run Code Online (Sandbox Code Playgroud)