以下sed命令无法在我的Lion mac上运行。
find . -type f -exec sed -i 's/user_dashboard/user/g' {} \;
我收到此错误
sed: 1: "./vendor/assets/javascr ...": invalid command code .
答案 0 :(得分:21)
sed
的OSX版本与大多数Linux系统中的版本不同。
它扩展了-i
选项,让您有机会保存具有不同扩展名的文件,但需要输入该扩展名。
如果您只想覆盖该文件,则需要使用sed -i "" ...sedCmd.... fileName
来就地重命名文件。
根据@JamesMcMahon的评论,请参阅此处full doc for OSX/BSD sed。
我希望这会有所帮助。
答案 1 :(得分:6)
-i
在你的sed版本中可能有不同的含义(不是“就地”)。尝试使用gsed
(如果可用)或将-i
替换为-e
并使用临时文件(以及之后的mv
)来模拟它。
答案 2 :(得分:1)
可以在mac上使用sed替换文本文件中的文本。
命令略有不同。
使用:-i,指定一个扩展名,其中sed将在sed操作之前保存原始文件。
运行命令:
$ sed -i _bakup -E's / THESTRING / THEGRANDSTRING'/tmp/jestinkt.txt