1
我在Mac和Ubuntu的工作,所以我要让我的脚本工作,同时支持Mac和Ubuntu,但在这两个系统sed -i
的工作方式不同:如何让sed -i在Mac和Ubuntu上都能工作?
在Ubuntu中,它应该是:
sed -i'' 's/Alt/Dog/g' /tmp/example.txt
在Mac,它应该是:
sed -i '' 's/Alt/Dog/g' /tmp/example.txt
我在Mac和Ubuntu的工作,所以我要让我的脚本工作,同时支持Mac和Ubuntu,但在这两个系统sed -i
的工作方式不同:如何让sed -i在Mac和Ubuntu上都能工作?
在Ubuntu中,它应该是:
sed -i'' 's/Alt/Dog/g' /tmp/example.txt
在Mac,它应该是:
sed -i '' 's/Alt/Dog/g' /tmp/example.txt
做出同样的-i
符号工作,GNU都sed
(Ubuntu的,Linux的)和BSD sed
键(Mac OS X),你必须:
-i
选项。这样:
sed -i.bak 's/Alt/Dog/g' /tmp/example.txt
将与sed
两种变体正常工作,创建备份文件/tmp/example.txt.bak
并覆盖原来的文件/tmp/example.txt
与修改后的输出。 (请注意具有多个链接或符号链接的文件。)
您不能在同一命令行中使用空后缀(无备份)。在GNU上,空字符串连接到-i
选项(概念上 - 如您在问题中所示);在BSD上,空字符串必须是单独的参数。从来没有两个人见面。