我正在尝试以root
递归查找并替换usr/local
的所有实例。
我知道这个命令:
find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;
在尝试替换没有" /"的字符串时有效与另一个,但我该怎么做包括" /"在被替换的字符串中?
答案 0 :(得分:0)
要在替换中使用/
,可以使用\
进行转义,
或者s
命令可以使用不同的分隔符:
sed 's|root|usr/local|g' ...
此外,(非标准)-i
选项需要FreeBSD sed(1)
中的参数,以及扩展名为macOS(OS X)sed(1)
的参数。在这种情况下,给出零长度参数(-i ''
)将具有与GNU sed(1)
没有参数相同的效果。
然而man-page警告不要使用这个用法:
不建议在就地编辑文件时提供零长度扩展,因为在磁盘空间耗尽的情况下存在损坏或部分内容的风险,等等。
此外,如果扩展不在其自己的参数中,则语法是兼容的:
sed -i.bak 's|root|usr/local|g' ...