如何通过bash脚本实现打开指定文件并完成字符串替换的功能?
Shell 字符串替换脚本实现
完整脚本代码
#!/bin/bash # 参数个数校验 if [ $# -ne 3 ]; then echo "用法错误:请传入3个参数,依次为 目标文件路径、待替换字符串、替换后字符串" exit 1 fi # 目标文件存在性校验 if [ ! -f "$1" ]; then echo "错误:目标文件 $1 不存在" exit 1 fi # 执行字符串替换,兼容Linux/macOS环境 sed -i.bak "s/$2/$3/g" "$1" # 删除临时备份文件,如需保留备份可删除下行 rm -f "$1.bak" echo "替换完成"
参数说明
- 第一个参数:目标文件路径,支持绝对路径/相对路径,需确保执行用户对文件有读写权限
- 第二个参数:待替换的原字符串,包含空格、正则特殊字符时建议用单引号包裹传入
- 第三个参数:替换后的目标字符串,特殊字符同理建议用单引号包裹传入
使用方法
- 将上述代码保存为
replace_str.sh - 给脚本添加执行权限:
chmod +x replace_str.sh - 执行脚本,示例:
上述命令会将./replace_str.sh ./demo.txt "原始内容" "替换后的内容"demo.txt文件中所有匹配到的原始内容替换为替换后的内容
常见调整说明
若仅需要替换文件中第一处匹配的原字符串,将脚本中sed命令的后缀
g删除即可,调整后替换命令为sed -i.bak "s/$2/$3/" "$1"
若需要保留替换前的原文件备份,删除脚本中rm -f "$1.bak"行即可,执行后会自动生成原文件名.bak的备份文件
内容的提问来源于stack exchange,提问作者Arzental
相关产品推荐
相关产品推荐

