在Ubuntu上运行的Sed命令,但不在OSX

时间:2016-01-04 17:05:25

标签: macos bash sed

我有一个bash脚本来执行一些sed命令,

sed -i "s/{unix_username}/$(id -un)/" docker-compose.env
sed -i "s/{unix_group}/$(id -gn)/" docker-compose.env
sed -i "s/{unix_uid}/$(id -u)/" docker-compose.env
sed -i "s/{unix_gid}/$(id -g)/" docker-compose.env

这些命令就像Ubuntu上的一个魅力一样,但它们会在OSX

中返回错误
sed: 1: "docker-compose.env": extra characters at the end of d command
sed: 1: "docker-compose.env": extra characters at the end of d command
sed: 1: "docker-compose.env": extra characters at the end of d command
sed: 1: "docker-compose.env": extra characters at the end of d command

我发现一个网站提供了使这个命令在OSX(http://www.karlosp.net/blog/2010/11/24/sed-1-file-extra-characters-at-the-end-of-l-command/)上运行的方法,但他没有解释为什么我们必须添加一个空参数才能使其工作

sed -i "" -e "s/{unix_username}/$(id -un)/" docker-compose.env
sed -i "" -e "s/{unix_group}/$(id -gn)/" docker-compose.env
sed -i "" -e "s/{unix_uid}/$(id -u)/" docker-compose.env
sed -i "" -e "s/{unix_gid}/$(id -g)/" docker-compose.env

有一种方法可以使这些命令在没有这些空参数的情况下工作吗? 如果这个空洞的论点必须在这里,有人可以解释我为什么吗?

由于

0 个答案:

没有答案