完美解决mac环境使用sed修改文件出错的问题
2017-04-06 09:38
726 查看
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修改文件出错的解决方法
- 完美解决 .txt文件在Mac上不能打开的问题
- Python脚本完美解决Linux环境解压.zip文件乱码问题
- 解决WAMP环境修改apache配置文件不生效问题(Laravel public)
- 解决visual 2008中error PRJ0003 : 生成 cmd.exe 时出错”的问题---(使用优化大师清理文件之后)
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- Linux下修改.bash_profile文件后再次用CRT启动环境变量未生效的解决方法,oracle命令无法使用
- Mac下使用svnx进行版本控制,并解决无法上传.a库文件的问题
- 解决 django1.2环境中使用自带的admin管理界面,配置后访问出现“你无权限修改任何东西” 的问题
- 使用git从mac拉取代码到windows合并后,未修改文件变为已修改的解决方法
- win8下使用vagrant安装部署Linux虚拟环境出错的问题解决
- mac下如何修改文件权限(针对Cocoapod安装成功使用时一直提示command not found问题)
- php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
- 使用make编译android项目时,修改了文件xml文件名称,导致编译出错的问题原因
- mac上sed命令使用 -i 写入存盘问题,mv命令修改文件名
- 【ZYNQ LINUX】使用问题04 ubuntu12 环境变量修改错误,不能进入root 修改的解决办法
- 使用junit&spring修改系统的环境变量,解决docker程序测试问题
- 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换
- 解决duilib使用zip换肤卡顿的问题:修改duilib并使用资源文件换肤
- Python 3下使用Matplotlib工具画图,中文显示乱码的问题解决(修改配置文件)