Unix iMac shell 终端
sed -i 's/original/new/g' maths.tx
返回消息:sed:-i 不能与 stdin 一起使用
答案1
Mac 使用 BSD 版本的实用程序,例如sed
和date
,它们有自己的特性。
在这种特定情况下,BSD 版本为sed
授权备份文件的扩展名是-i
,而不是选修的,如 GNU 中那样sed
。
像这样:
sed -i .bak 's/needle/pin/g' haystack
显示的命令将替换文件中的所有实例needle
,pin
并且haystack
原始文件将保留在 中haystack.bak
。
sed
来自Mac上的实现手册:
-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.
与 Linux 主机上相反:
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
请注意,“零长度扩展”与“无扩展”不同。然后,您可以完全避免备份:
sed -i '' 's/needle/pin/g' haystack
答案2
您必须指定一个备份文件,例如:
sed -i .bak 's/original/new/g' maths.tx