我需要sed的帮助。我正在尝试删除文件中出现的所有样式 之后的3行。我
sed '/pattern/,+3d' file.
这只会删除3行和第一次出现的模式,但只会删除第二次出现的模式,但不会删除之后的行,这确实令人困惑。有人可以帮忙解决我在做什么吗?
答案 0 :(得分:0)
我认为 awk 更适合该任务。例如,
$ cat file
1
2
4
a0
1
a1
1
2
3
4
5
运行
awk '
flag { i ++ }
i == 3 { flag = 0 }
!flag
/a/ { flag = 1; i = 0 }
' file
输出
1
2
4
a0
3
4
5
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -n '/regexp/{p;:a;n;//ba;n;//ba;n;//ba;d};p' file
如果遇到正则表达式,请打印当前行,然后删除以下3行。在读取这三行代码的任何时候,都会发生正则表达式,请重置计数。
如果正则表达式也要删除,请使用:
sed -n '/regexp/{:a;n;//ba;n;//ba;n;//ba;d};p' file