完美解决mac环境使用sed修改文件出错的问题

发布时间 - 2026-01-11 00:32:00    点击率:

sed是linux命令,用于处理文件内容(修改,替换等),mac中都可以使用,但发现相同的替换命令在linux可以正常执行,在mac则执行失败。

出错原因

用shell写了个更新Config/Config.php版本的脚本,代码如下:

#!/bin/bash

file='Config/Config.php'
old_version='1.1.0'
new_version='1.1.1'

#替换配置文件版本
sed -i "s/$old_version/$new_version/g" "$file"

exit 0

在linux执行正常,但在mac环境下执行出现以下错误:

$ cat ./Config/Config.php
// 版本
define('VERSION', 1.1.0);

$ ./update_config.sh 
sed: 1: "Config/Config.php": invalid command code C

man sed 查看原因,找到 -i 参数的说明

-i extension 
Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to 
give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.

原来sed -i需要带一个字符串作为备份源文件的文件名称,如果这个字符串长度为0,则不备份。

例如执行

sed -i "_bak" "s/a/b/g" "example.txt"

则会创建一个example.txt_bak的备份文件,文件内容为修改前的example.txt内容

实例

1、如果需要备份源文件,update_config.sh修改为

#!/bin/bash

file='Config/Config.php'
old_version='1.1.0'
new_version='1.1.1'

#替换配置文件版本
sed -i "_bak" "s/$old_version/$new_version/g" "$file"

exit 0

执行结果

$ cat ./Config/Config.php
// 版本
define('VERSION', 1.1.0);

$ ./update_config.sh 

$ cat ./Config/Config.php
// 版本
define('VERSION', 1.1.1);

$ cat ./Config/Config.php_bak
// 版本
define('VERSION', 1.1.0);

执行前会备份源文件到Config.php_bak

2、如果不需要备份,把update_config.sh修改为

#!/bin/bash

file='Config/Config.php'
old_version='1.1.0'
new_version='1.1.1'

#替换配置文件版本
sed -i "" "s/$old_version/$new_version/g" "$file"

exit 0
执行结果

$ cat ./Config/Config.php
// 版本
define('VERSION', 1.1.0);

$ ./update_config.sh

$ cat ./Config/Config.php
// 版本
define('VERSION', 1.1.1);

以上这篇完美解决mac环境使用sed修改文件出错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# mac环境使用sed修改文件  # 配置文件  # 给大家  # 不需要  # 但在  # 希望能  # 写了  # 可以使用  # 这篇  # 中都  # 则会  # 创建一个  # 小编  # 大家多多  # 长度为  # 备份文件  # 需要带  # define  # bash  # bin  # class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何快速搭建个人网站并优化SEO?  javascript中的try catch异常捕获机制用法分析  javascript基本数据类型及类型检测常用方法小结  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  linux top下的 minerd 木马清除方法  Linux网络带宽限制_tc配置实践解析【教程】  如何在局域网内绑定自建网站域名?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  微信小程序 HTTPS报错整理常见问题及解决方案  如何用免费手机建站系统零基础打造专业网站?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel如何配置Horizon来管理队列?(安装和使用)  如何在Windows虚拟主机上快速搭建网站?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  公司门户网站制作流程,华为官网怎么做?  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何续费美橙建站之星域名及服务?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  公司网站制作价格怎么算,公司办个官网需要多少钱?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  高端建站如何打造兼具美学与转化的品牌官网?  实例解析angularjs的filter过滤器  微信小程序 input输入框控件详解及实例(多种示例)  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  javascript基于原型链的继承及call和apply函数用法分析  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  lovemo网页版地址 lovemo官网手机登录  Laravel如何为API编写文档_Laravel API文档生成与维护方法  JavaScript如何实现倒计时_时间函数如何精确控制  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何用AWS免费套餐快速搭建高效网站?  如何在阿里云服务器自主搭建网站?  网站页面设计需要考虑到这些问题  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】