mac上sed -i替换字符串异常解决
问题
mvpbang@mvpbang rocky9.5-9x % sed -i 's/91/90/g' Vagrantfile
sed: 1: "Vagrantfile": invalid command code V
说明你在运行
sed
时错误地把文件名Vagrantfile
当成了sed
的“命令表达式”,也就是写法格式不对。
解决
mac sed和 gun sed在替换文本-i语法存在差异
mvpbang@mvpbang rocky9.5-9x % sed --help
sed: illegal option -- -
usage: sed script [-EHalnru] [-i extension] [file ...]
sed [-EHalnu] [-i extension] [-e script] ... [-f script_file] ... [file ...]
//替换文本语法
sed [-i extension] xxxx
1. 查看内容(不修改文件):
1 | sed 's/foo/bar/' Vagrantfile |
2. 原地替换文件内容(macOS 注意 -i ''
语法):
1 | sed -i '' 's/foo/bar/g' Vagrantfile |
-i ''
:表示“就地修改”,macOS 需要这样写,Linux 可以写成-i
或-i.bak
。