sed第2行到最后一行删除匹配的行
时间: 2023-09-10 18:15:31 浏览: 58
假设要删除以"foo"开头的所有行,可以使用以下命令:
```
sed '2,$ {/^foo/d}' filename
```
解释:
- `2,$` 表示从第二行到最后一行
- `{}` 用来分组多个命令
- `/^foo/` 匹配以 "foo" 开头的行
- `d` 删除匹配的行
相关问题
谁让你长篇大论讲基础用法了,我只想知道sed如何删除匹配行上方相邻的2行
可以使用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`表示删除文件的前两行。
DOS下面用sed命令可以实现多行并一行吗
在 DOS 命令行下,如果你已经安装了 GNU 版本的 sed,可以使用以下命令将多行文本合并成一行:
```
sed ':a;N;$!ba;s/\n//g' filename.txt
```
其中,`filename.txt` 是需要合并的文件名。这个命令会将文件中的所有换行符都替换为空字符,从而将多行文本合并成一行。
如果你想要将多行文本中的某些行合并成一行,可以使用 sed 的模式匹配功能。例如,假设你有一个名为 `input.txt` 的文件,其内容如下:
```
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
```
你可以使用以下命令将第二行和第三行合并成一行,并输出到一个新的文件 `output.txt` 中:
```
sed '2N;s/\n/ /' input.txt > output.txt
```
其中,`2N` 用于将第二行和第三行合并到一起,`s/\n/ /` 用于将它们之间的换行符替换为空格。执行完上述命令后,`output.txt` 的内容将如下所示:
```
This is line 1.
This is line 2. This is line 3.
This is line 4.
This is line 5.
```
需要注意的是,这种方法只能合并固定的行数,如果你需要合并的行数不固定,可能需要使用其他的方法。