完美解决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免费套餐快速搭建高效网站?
如何在阿里云服务器自主搭建网站?
网站页面设计需要考虑到这些问题
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】

