【发布时间】:2015-10-27 19:05:47
【问题描述】:
这是一个关于 Mac 上的 sed 的问题,它需要一个长度为零的字符串来就地替换而无需备份文件。
#!/usr/bin/env bash -x
SEDOPT='-i "" '
echo $SEDOPT
sed $SEDOPT -e "s/a/a/g" filename.txt
sed "$SEDOPT" -e "s/a/a/g" filename.txt
sed -i "" -e "s/a/a/g" filename.txt
如果你执行上面的命令,你会得到类似的输出
1|+ SEDOPT='-i "" '
2|+ echo -i '""'
3|-i ""
4|+ sed -i '""' -e s/a/a/g filename.txt
5|+ sed '-i "" ' -e s/a/a/g filename.txt
6|+ sed -i '' -e s/a/a/g filename.txt
我正在设置一个 sed 选项变量 SEDOPT,它将根据发行版进行更改。
有人可以帮助我使第 4 行和第 5 行的输出表现得像第 6 行吗? 谢谢。
【问题讨论】: