2010-09-14 14 views
0

Je suis sur une boîte Solaris 8 qui ne prend pas en charge l'option -i pour sed, donc je suis en utilisant les éléments suivants à partir d'une recherche Google sur le sujet:Aide Le remplacement des chaînes sur Solaris

# 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 

Cela fonctionne, sauf il dérange les autorisations de fichiers et le groupe: propriétaire.

Comment puis-je conserver les informations d'origine?

Répondre

2

Vous pouvez utiliser 'cat'.
cat ${file}.new > ${file} && rm ${file}.new

+0

Parfait! Une autre bonne alternative. J'ai effectivement utilisé celui-ci. Travaillé comme un charme. –

2

cp -p préserve les choses que vous voulez. Personnellement, je ferais cela (pour imiter sed -i.bak):

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

Vous pouvez ajouter rm ${file}.bak à la fin si on le souhaite, dans ce cas, vous ne seriez pas techniquement besoin du -p dans la ligne ci-dessus cp. Mais avec ce qui précède, vous pouvez faire mv ${file}.bak ${file} pour récupérer si le remplacement va de travers.

+0

Excellent! Merci pour une excellente option w/backup. –