## 1、`sed` 概览 `sed` 是 Linux 中非常常见的流编辑器(stream editor),它会按行读取输入内容,然后对文本进行处理。 常见用途: - 文本替换 - 删除指定行 - 打印指定范围内容 - 批量修改配置文件 ## 2、基本特点 可以这样理解 `sed`: - 从文件或标准输入中逐行读取内容 - 对每一行按规则处理 - 默认把处理结果输出到标准输出 如果想直接修改原文件,通常需要使用 `-i`。 ## 3、常见选项 - `-r`:使用扩展正则表达式 - `-i`:直接修改文件内容 - `-n`:默认不输出,常配合 `p` 使用 ## 4、最常见的替换命令 基本格式: ```shell sed 's/旧内容/新内容/修饰符' 文件名 ``` 其中: - `s`:表示 substitute(替换) - `g`:表示行内全局替换 ### 4.1 替换每行第一个匹配项 ```shell sed 's/root/admin/' file.txt ``` ### 4.2 替换每行所有匹配项 ```shell sed 's/root/admin/g' file.txt ``` ### 4.3 直接修改原文件 ```shell sed -i 's/root/admin/g' file.txt ``` ## 5、常见示例 ### 5.1 打印指定行 ```shell sed -n '1,5p' /etc/passwd ``` 表示只打印第 1 到第 5 行。 ### 5.2 删除指定行 ```shell sed '3d' file.txt ``` 表示删除第 3 行后输出结果。 ### 5.3 删除空行 ```shell sed '/^$/d' file.txt ``` ### 5.4 替换配置项 ```shell sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config ``` 这是运维里很常见的批量改配置写法。 ## 6、实战建议 - 批量改配置时优先考虑 `sed -i` - 涉及正则时可结合 `-r` - 正式改文件前,建议先不加 `-i` 预览结果 - 对系统配置文件做替换前,最好先备份 ## 7、小结 - `sed` 是按行处理文本的流编辑器 - `s/旧/新/g` 是最常用的替换格式 - `-i` 用于直接修改文件 - `-n` 常和 `p` 搭配控制输出 - 它非常适合批量替换和配置修改场景