sed语言介绍
封面图
•
2026-01-14
•
Linux
204
0
0
0
`sed`(stream editor)是一个强大的文本处理工具,主要用于对输入流(文件或管道)进行基本的文本转换。它在Unix/Linux系统中广泛使用,能够高效地处理文本内容,如查找、替换、删除、插入等操作。 --- ## 一、什么是 `sed`? `sed` 是一个**流编辑器**,它的主要功能是: - 按行读取输入 - 对每一行进行处理(基于正则表达式) - 输出处理后的结果 它不修改原文件,而是将处理后的内容输出到标准输出(或重定向到新文件)。 --- ## 二、`sed` 的基本语法 ```bash sed [选项] '命令' [输入文件] ``` ### 常用选项: | 选项 | 说明 | |------|------| | `-n` | 禁用自动输出,只输出匹配的行 | | `-i` | 直接修改文件内容(需注意备份) | | `-e` | 指定多个命令 | --- ## 三、`sed` 的常用命令 ### 1. 替换(`s/pattern/replacement/flags`) ```bash sed 's/old/new/' file.txt ``` - `s`:表示替换 - `old`:要被替换的字符串 - `new`:替换后的字符串 - `flags` 可选: - `g`:全局替换(所有匹配项) - `p`:打印匹配行 - `i`:忽略大小写 **示例:** ```bash sed 's/hello/world/' file.txt # 替换每行第一个 hello 为 world sed 's/hello/world/g' file.txt # 替换每行所有 hello 为 world sed 's/Hello/world/i' file.txt # 忽略大小写替换 Hello 为 world ``` --- ### 2. 删除(`d`) ```bash sed '/pattern/d' file.txt ``` 删除匹配 `pattern` 的行。 **示例:** ```bash sed '/^#/d' file.txt # 删除以 # 开头的行 sed '3d' file.txt # 删除第3行 ``` --- ### 3. 插入(`i` / `a`) - `i`:在匹配行前插入 - `a`:在匹配行后插入 ```bash sed '/pattern/i This is inserted line' file.txt sed '/pattern/a This is appended line' file.txt ``` --- ### 4. 追加(`a`) ```bash sed '$ a This is the last line' file.txt ``` 在最后一行后面追加内容。 --- ### 5. 打印(`p`) ```bash sed -n '/pattern/p' file.txt # 打印匹配 pattern 的行 ``` --- ### 6. 区间操作 可以对特定范围的行执行操作: ```bash sed '3,5d' file.txt # 删除第3到第5行 sed '3,5s/old/new/' file.txt # 第3到第5行替换 ``` --- ## 四、`sed` 的高级功能 ### 1. 正则表达式支持 `sed` 支持 **基本正则表达式(BRE)**,也可以使用扩展正则表达式(需要 `-E` 选项)。 **示例:** ```bash sed -E 's/[0-9]+//g' file.txt # 删除所有数字 ``` --- ### 2. 保存和恢复(`w` / `r`) - `w`:将匹配行写入文件 - `r`:从文件中读取内容并插入 ```bash sed '/pattern/w output.txt' file.txt # 匹配行写入 output.txt sed '3r input.txt' file.txt # 在第3行后插入 input.txt 内容 ``` --- ### 3. 多条命令 可以用分号 `;` 分隔多条命令: ```bash sed 's/old/new/; s/another/other/' file.txt ``` 或者使用 `-e` 指定多个命令: ```bash sed -e 's/old/new/' -e 's/another/other/' file.txt ``` --- ## 五、`sed` 与文件直接修改 使用 `-i` 选项可以直接修改文件内容: ```bash sed -i 's/old/new/' file.txt ``` > 注意:此操作会直接修改原始文件,请确保有备份。 --- ## 六、`sed` 与 `awk` 的区别 | 特性 | `sed` | `awk` | |------|-------|-------| | 主要用途 | 流式文本处理 | 基于字段的文本处理 | | 表达能力 | 弱 | 强 | | 数据结构 | 按行处理 | 按行/字段处理 | | 正则支持 | 基本 | 强大 | --- ## 七、常见 `sed` 示例 ### 示例 1:替换文件中的某个字符串 ```bash sed 's/oldstring/newstring/g' input.txt > output.txt ``` ### 示例 2:删除空行 ```bash sed '/^$/d' file.txt ``` ### 示例 3:添加注释行 ```bash sed '1i # This is a comment line' file.txt ``` ### 示例 4:替换 IP 地址 ```bash sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/[IP]/g' file.txt ``` --- ## 八、总结 `sed` 是一个非常强大且高效的文本处理工具,尤其适合: - 批量替换文本 - 删除特定行 - 插入或追加内容 - 配合正则表达式进行复杂匹配 虽然 `sed` 功能强大,但其语法相对复杂,建议结合实际场景逐步学习和练习。 --- 如果你有具体的使用场景或想了解更复杂的 `sed` 脚本,欢迎继续提问!
上一篇:
影响采购工作有哪些?
下一篇:
房屋风水学
标题录入,一次不能超过6条
留言
评论