Appearance
sed 命令:流编辑器
1. 简介
sed
(Stream Editor)是一个强大的文本流编辑器。它可以执行复杂的文本转换操作,如替换、删除、插入和重排文本。sed
通常用于自动编辑一个或多个文件、简化重复的编辑任务、以及编写转换程序。
2. 基本语法
bash
sed [选项] '命令' 文件
3. 常用选项
-e script
:添加 sed 命令到处理队列-f script-file
:从文件中读取 sed 命令-n
:抑制自动输出-i
:直接修改原文件-r
或-E
:使用扩展正则表达式
4. 基础使用示例
替换文本:
bashsed 's/old/new/' file.txt
全局替换(替换所有匹配):
bashsed 's/old/new/g' file.txt
删除特定行:
bashsed '3d' file.txt # 删除第3行
打印特定行:
bashsed -n '2,4p' file.txt # 打印第2到4行
5. 进阶使用技巧
使用正则表达式:
bashsed -E 's/[0-9]+/NUMBER/' file.txt
多个命令组合:
bashsed -e 's/old/new/' -e 's/abc/xyz/' file.txt
直接修改文件:
bash
sed -i 's/old/new/g' file.txt
在特定行前/后插入文本:
bashsed '2i\Inserted Line' file.txt # 在第2行前插入 sed '2a\Appended Line' file.txt # 在第2行后追加
6. 实用示例
删除空行:
bashsed '/^$/d' file.txt
在每行开头添加行号:
bashsed = file.txt | sed 'N;s/\n/\t/'
转换 DOS/Windows 文本文件为 Unix 格式:
bashsed 's/\r$//' file.txt
从 HTML 中提取纯文本:
bashsed 's/<[^>]*>//g' file.html
7. 注意事项
sed
默认不会修改原文件,除非使用-i
选项。- 在使用
-i
选项时要小心,最好先做备份。 - 复杂的
sed
命令可能难以阅读和维护,考虑使用注释或分解成多个简单命令。
8. 相关命令
awk
:更强大的文本处理工具tr
:用于转换或删除字符cut
:用于提取文件的列grep
:用于模式匹配的搜索
9. 技巧与建议
使用
sed
创建备份文件:bashsed -i.bak 's/old/new/g' file.txt
使用
&
引用匹配的文本:bashsed 's/hello/& world/' file.txt
使用括号和反向引用:
bashsed 's/\(hello\) \(world\)/\2 \1/' file.txt
在脚本中使用变量:
bashold="hello" new="bonjour" sed "s/$old/$new/g" file.txt
sed
是一个非常强大的文本处理工具,特别适合进行批量文本编辑和转换。它的语法简洁但功能丰富,常与其他命令如 grep
和 awk
结合使用,可以完成复杂的文本处理任务。掌握 sed
可以大大提高文本处理的效率,尤其是在处理大量文本数据或自动化脚本编写时。