什么是 sed?
sed(Stream Editor)是 Unix/Linux 系统中用于对输入流(文件或管道)进行基本文本转换的非交互式编辑器。它常用于脚本中自动化文本处理任务。
-i 和 -e 参数说明
-i:直接修改原文件(就地编辑),而不是输出到标准输出。可选后缀如-i.bak用于备份。-e:允许添加多个 sed 表达式。每个-e后跟一个脚本命令。
常用示例
1. 替换文件中的字符串(就地修改)
sed -i 's/old/new/g' filename.txt
2. 使用多个替换规则
sed -i -e 's/foo/bar/g' -e 's/hello/world/g' config.txt
3. 备份原文件并修改
sed -i.bak -e 's/debug=true/debug=false/g' app.conf
4. 删除包含特定关键词的行
sed -i '/deprecated/d' script.sh
注意事项
- 在 macOS 上,
-i参数必须带后缀(即使为空,也需写成-i '')。 - 正则表达式语法默认为基本正则(BRE),如需扩展正则(ERE),可加
-r(GNU sed)或-E(BSD/macOS)。 - 慎用
-i,建议先不带-i测试命令输出是否符合预期。