**`sed`(流编辑器)常用命令**
`sed` 是一个强大的文本处理工具,常用于在文本流中进行替换、删除、插入等操作。以下是一些常见的 `sed` 命令:
1. **替换文本**:
? ?- `s/old/new/g`:将文本中所有匹配 "old" 的地方替换为 "new"。
? ?例如,替换所有 "apple" 为 "orange":
? ?```
? ?sed 's/apple/orange/g' filename
? ?```
2. **删除行**:
? ?- `d`:删除模式空间中的当前行。
? ?例如,删除包含 "error" 的行:
? ?```
? ?sed '/error/d' filename
? ?```
3. **打印**:
? ?- `p`:打印模式空间中的当前行。
? ?例如,打印包含 "success" 的行:
? ?```
? ?sed -n '/success/p' filename
? ?```
4. **插入和追加**:
? ?- `i`:在匹配行前插入文本。
? ?- `a`:在匹配行后追加文本。
? ?例如,在包含 "start" 的行前插入 "Begin":
? ?```
? ?sed '/start/i Begin' filename
? ?```
5. **保存到文件**:
? ?- `-i`:直接修改文件内容,保存更改。
? ?例如,替换 "cat" 为 "dog" 并保存到原文件:
? ?```
? ?sed -i 's/cat/dog/g' filename
? ?```
6. **选择行范围**:
? ?- `1,3d`:删除第1到第3行。
? ?- `/start/,/end/s/old/new/g`:在 "start" 和 "end" 之间的行中替换 "old" 为 "new"。
? ?例如,删除第5到第8行:
? ?```
? ?sed '5,8d' filename
? ?```
7. **反斜杠转义**:
? ?- 在命令中使用反斜杠 `\` 来转义特殊字符,以确保它们不被解释为正则表达式。
? ?例如,替换包含 `^` 的行中的 `^` 为 `start`:
? ?```
? ?sed 's/\^/start/g' filename
? ?```
这些是一些常见的 `sed` 命令,`sed` 提供了许多功能,可以根据需要进一步研究和使用。