替换(核心命令:sed)
场景:修改文件中的特定字符串
命令结构:
sed -i 's/原内容/新内容/替换范围' 文件名
关键参数:
-i:直接修改文件(危险操作!务必备份)s:替换命令- 替换范围:
g(全局替换)、行号(如1,5s/.../替换1-5行)
示例:
- 全局替换(所有匹配项):
sed -i 's/old_text/new_text/g' file.txt
- 指定行替换(仅第3行):
sed -i '3s/old_text/new_text/' file.txt
- 备份原文件(推荐):
sed -i.bak 's/old_text/new_text/g' file.txt # 生成file.txt.bak
文件替换(mv 与 cp 命令)
场景:用新文件覆盖旧文件
-
移动覆盖(
mv):mv -f 新文件 旧文件 # -f强制覆盖
风险:旧文件永久删除!建议先备份:
cp 旧文件 旧文件.bak && mv 新文件 旧文件
-
复制覆盖(
cp):cp -f 新文件 旧文件 # 保留新文件副本
批量文件替换(find + sed)
场景:递归修改目录下多个文件内容
find /目标路径 -type f -name "*.txt" -exec sed -i.bak 's/old/new/g' {} \;
解析:
-type f:仅操作文件-name "*.txt":筛选.txt文件-exec:对每个找到的文件执行后续命令- :代表当前文件路径
\;:命令结束符
交互式替换工具(vim)
场景:手动确认替换内容
- 用vim打开文件:
vim file.txt
- 命令模式输入:
:%s/old_text/new_text/gc # c表示每次替换前确认
确认选项:
y:替换当前匹配n:跳过a:替换所有剩余
安全操作黄金法则
- 备份优先:
cp 原文件 原文件.bak # 单文件备份 tar -czvf backup.tar.gz /目标目录 # 目录备份
- 预览结果:
- 移除
sed的-i参数先测试(如sed 's/old/new/g' file.txt)
- 移除
- 权限检查:
ls -l 文件 # 确认当前用户有写权限
- 生产环境:在非关键系统测试后再执行!
替代方案(图形界面)
- Gedit/Kate:文本编辑器的查找替换功能(Ctrl+H)
- VS Code:全局搜索(Ctrl+Shift+F)支持多文件替换
:
- 简单文本替换 →
sed - 安全覆盖文件 →
cp+ 备份 - 复杂批量操作 →
find+sed - 人工确认 →
vim交互模式
引用说明基于 GNU Coreutils 官方文档、Linux Man 手册页及 IBM 开发者实践指南,命令测试环境为 Ubuntu 22.04 LTS 和 Bash 5.0,确保跨主流发行版兼容性,操作前请查阅
man [命令]获取系统特定说明。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9896.html