开发者

Help with Replacing Strings on Solaris

I am on a Solaris 8 box that does not support -i option for sed, so I am using the followin开发者_运维知识库g from a google search on the topic:

# 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

This works except it messes up file permissions and group:owner.

How can I retain the original information?


You may use 'cat'.
cat ${file}.new > ${file} && rm ${file}.new


cp -p preserves the stuff you want. Personally I would do this (to imitate sed -i.bak):

...
cp -p ${file} ${file}.bak
sed 's/..../g' ${file}.bak > ${file}
...

You could add rm ${file}.bak to the end if desired, in which case you wouldn't technically need the -p in the cp line above. But with the above you can do mv ${file}.bak ${file} to recover if the replacement goes awry.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜