sed 替换指定行的下一行
时间: 2023-09-20 12:05:04 浏览: 49
可以使用 sed 的地址定位和替换命令结合来实现替换指定行的下一行。
例如,假设要将文件中第 5 行的下一行替换为 "new line",可以使用以下命令:
```
sed '5{ n; s/.*/new line/ }' file.txt
```
解释:
- `5{}`:表示对第 5 行执行命令。
- `n`:表示读取下一行,并输出到标准输出。
- `s/.*/new line/`:表示将读取到的下一行用 "new line" 替换掉。
- `file.txt`:表示要操作的文件名。
如果要在原始文件中进行替换,可以使用 `-i` 选项:
```
sed -i '5{ n; s/.*/new line/ }' file.txt
```
相关问题
sed 替换指定字符的下一行
可以使用sed的n命令和p命令组合实现替换指定字符的下一行。
例如,假设我们有一个文本文件test.txt,其中包含以下内容:
```
apple
banana
orange
grape
```
我们想要将含有字符“e”的行的下一行替换为“pear”。
使用以下命令:
```
sed '/e/{n;s/.*/pear/}' test.txt
```
解释一下:
- `/e/`:匹配含有字符“e”的行。
- `{}`:花括号内的命令只对匹配到的行执行。
- `n`:读取下一行。
- `s/.*/pear/`:将下一行替换为“pear”。
输出结果:
```
apple
banana
pear
grape
```
可以看到,“orange”这一行的下一行被替换为了“pear”。
shell中sed替换指定一行的内容
使用 `sed` 命令可以替换指定文件中匹配某个模式的行的内容。假设要将文件 `example.txt` 中第 5 行的内容从 `old_text` 改为 `new_text`,可以使用以下命令:
```bash
sed '5s/old_text/new_text/' example.txt
```
其中,`5s` 指定要替换第 5 行的内容,`old_text` 是要被替换的文本,`new_text` 是替换后的文本。执行此命令后,会在屏幕上打印出替换后的文件内容。如果要直接修改文件,可以加上 `-i` 选项:
```bash
sed -i '5s/old_text/new_text/' example.txt
```
这样,文件 `example.txt` 中第 5 行的内容就被替换了。