我已成功使用以下sed命令在Linux中搜索/替换文本:
sed-i's/old\u link/new\u link/g'*
但是,当我在Mac OS X上试用时,我得到:
“命令c需要\后跟文本”
我以为我的Mac电脑运行的是一个普通的BASH shell。怎么了
编辑:
根据@High Performance,这是由于Macsed具有不同的(BSD)风格,因此我的问题是如何在BSDsed中复制此命令
编辑:
下面是一个实际的例子,它导致了这种情况:
sed-i's/hello/gbye/g'*
如果使用-i选项,则需要为备份提供扩展
如果您有:
File1.txt
File2.cfg
命令(注意-i和'之间缺少空格,以及-e使其在新版本的Mac和GNU上工作):
sed-i'.original'-e's/old_-link/new_-link/g'*
创建2个备份文件,如:
File1.txt.original
File2.cfg.original
没有可移植的方法可以避免生成备份文件,因为不可能找到适用于所有情况的混合sed命令:
sed-i-e…-无法在OS X上运行,因为它会创建-e备份sed-i''-e…-不适用于OS X 10.6,但适用于10.9+sed-i'-e…-不在GNU上工作
注意考虑到没有一个sed命令可以在所有平台上运行,您可以尝试使用另一个命令来实现相同的结果
例如,perl-i-pe的/old\u-link/new\u-link/g'*