我在一个不支持sed的-i选项的Solaris 8机器上,所以我在谷歌搜索中使用以下主题:
# find . -name cancel_submit.cgi | while read file; do
> sed 's/ned.dindo.com\/confluence\/display\/CESDT\/CETS+DocTools>DOC Team/wwwin-dev.dindo.com\/Eng\/CntlSvcs\/InfoFrwk\/GblEngWWW\/Public\/index.html>EDCS Team/g' ${file} > ${file}.new
> mv ${file}.new ${file}
> done
除非它弄乱文件权限和组:所有者。
如何保留原始信息?
答案 0 :(得分:2)
你可以使用'猫'。
cat ${file}.new > ${file} && rm ${file}.new
答案 1 :(得分:2)
cp -p
会保留您想要的内容。我个人会这样做(模仿sed -i.bak
):
...
cp -p ${file} ${file}.bak
sed 's/..../g' ${file}.bak > ${file}
...
如果需要,您可以将rm ${file}.bak
添加到最后,在这种情况下,您在技术上不需要上面-p
行中的cp
。但是如上所述,如果更换失败,您可以mv ${file}.bak ${file}
恢复。