在我使用的 Lion Mac 上,以下 sed 命令无法工作。
find . -type f -exec sed -i 's/user_dashboard/user/g' {} \;
我遇到了这个错误。
sed: 1: "./vendor/assets/javascr ...": invalid command code .
OSX版本的sed
与大多数Linux系统中的版本不同。
它将-i
选项扩展为让您有机会使用不同的扩展名保存文件,但需要输入该扩展名。
如果您只想直接覆盖文件,您需要使用sed -i "" ...sedCmd.... fileName
在原地重命名您的文件。
根据@JamesMcMahon的评论,在此处查看OSX/BSD sed的完整文档。
希望这可以帮助您。
-i
在您使用的版本的 sed 中可能有不同的含义(不是“原地”)。如果可用,尝试使用 gsed
,或者将 -i
替换为 -e
并使用临时文件(然后使用 mv
)来模拟它。
sudo port install gsed
- Boy Baukema在Mac上使用sed动态替换文件中的文本是可行的,
只是命令略有不同。
使用:-i
,您需要指定一个后缀,sed会在修改完成后将原始文件保存为该后缀。
运行命令如下:
$ sed -i _backup -E 's/foo/bar/' /tmp/jestinkt.txt
在经过修改后,以及原始文件 /tmp/jestinkt.txt_backup 的同时结束
sed -i ""
命令来原地重命名文件。祝您好运。 - shellter