谁让你长篇大论讲基础用法了,我只想知道sed如何删除匹配行上方相邻的2行
时间: 2024-05-08 07:17:11 浏览: 18
可以使用sed命令结合正则表达式来实现删除匹配行上方相邻的2行,示例如下:
```
sed -e '/pattern/{N;N;d;}' file.txt
```
其中,`/pattern/`是匹配的正则表达式,`N`表示读取下一行并将其添加到模式空间中,`d`表示删除模式空间中的行。所以,`N;N;d;`的含义是读取匹配行上方的两行,并将它们一起删除。
需要注意的是,这种方法只适用于匹配行不是文件的第一行。如果匹配行是第一行,会删除第一行和第二行。如果想要删除第一行和第二行,可以使用以下命令:
```
sed -e '1,2d' -e '/pattern/{N;N;d;}' file.txt
```
其中,`1,2d`表示删除文件的前两行。
相关问题
sed如何删除匹配行前2行
可以使用以下命令来删除匹配行前2行:
```
sed '1,2d;/pattern/d' filename
```
其中,`1,2d`表示删除文件的前两行,`/pattern/d`表示删除匹配模式的行。将它们结合起来,即可删除匹配行前2行。注意,这个命令会在原文件上修改,如果需要保留原文件,需要使用重定向将输出写入新文件中。
sed第2行到最后一行删除匹配的行
假设要删除以"foo"开头的所有行,可以使用以下命令:
```
sed '2,$ {/^foo/d}' filename
```
解释:
- `2,$` 表示从第二行到最后一行
- `{}` 用来分组多个命令
- `/^foo/` 匹配以 "foo" 开头的行
- `d` 删除匹配的行