sed第2行到最后一行删除匹配的行
时间: 2023-09-10 12:15:31 浏览: 203
假设要删除以"foo"开头的所有行,可以使用以下命令:
```
sed '2,$ {/^foo/d}' filename
```
解释:
- `2,$` 表示从第二行到最后一行
- `{}` 用来分组多个命令
- `/^foo/` 匹配以 "foo" 开头的行
- `d` 删除匹配的行
相关问题
sed 只替换匹配到的 第二个字符串
在sed命令中,如果你想只替换匹配到的第二个字符串,可以使用正则表达式中的捕获组(Capturing Group)和`\2`引用。捕获组是在圆括号()`中定义的,`\2`则是引用第一个捕获组的内容(因为索引从1开始计数)。下面是一个例子:
假设我们有一个文本文件,内容如下:
```txt
first string to replace second occurrence
another line with the same pattern to replace
```
如果我们只想替换每个行中的第二个"string",我们可以这样做:
```bash
sed -i 's/(.*string) \1/\1 replacement/g' input.txt
```
在这个命令中:
- `\(.*string\)` 创建了一个捕获组,匹配任何字符(`.*`)加一个"string"
- `\1` 表示前面捕获的第一个"string"
- `replacement` 是你想要替换成的新字符串
结果将会是:
```txt
first replacement to replace second occurrence
another line with the same pattern to replace
```
linux shell中,如何通过sed命令,在匹配的两行内容后插入内容,比如第一行是 hello,第二行是 world,在这两行后插入!
可以使用以下的sed命令实现:
```
sed '/hello/,/world/ a\Insert Text Here' file.txt
```
其中,`/hello/,/world/`指定了匹配的两行内容,`a\Insert Text Here`表示在匹配到的两行后面插入文本"Insert Text Here"。注意,这个命令会在标准输出中打印出结果,如果想要将结果保存到文件中,可以使用重定向符号`>`将结果输出到一个新文件中,例如:
```
sed '/hello/,/world/ a\Insert Text Here' file.txt > new_file.txt
```
阅读全文