sed第2行到最后一行删除匹配的行
时间: 2023-09-10 20:15:31 浏览: 184
假设要删除以"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`表示删除文件的前两行。
linux删除文档第二行第3到第6个字符
在Linux中,你可以使用`sed`命令结合正则表达式来删除文档(假设是文本文件)的特定行和字符。如果你想要删除第二行从第3个字符开始到第6个字符的内容,由于通常`sed`处理单字符操作,所以需要连续使用两个`s`指令,一个用于跳过前两个字符,另一个用于替换这四个字符。例如:
```bash
sed -i '2s/^.\{2\}.*/\0/' yourfile.txt
```
这里 `-i` 参数表示直接修改原文件(如果不希望修改原文件,可以使用 `sed '...' yourfile.txt > newfile.txt`)。`2s` 表示第二行(`2`),`^.\{2\}` 是匹配前两个任意字符(`.`代表任意字符,`\{2\}` 指定出现两次),`*/\0` 中的 `\0` 是指代原字符串,即保留除目标字符外的所有内容。
如果只是想保留从第三列开始的内容,而不是精确地指定字符数,你可以试试`cut`或`awk`命令,比如:
```bash
awk '{sub(/^[[:space:]]*|.{3}/,"",$2)} 1' yourfile.txt
```
同样,这里假设第一列是空格或其他分隔符后的空间,`.{3}` 匹配三个字符。这个命令将删除第二列的前三列内容。
阅读全文