Помогите с заменой строк в Solaris - PullRequest
0 голосов
/ 14 сентября 2010

Я нахожусь на коробке Solaris 8, которая не поддерживает опцию -i для sed, поэтому я использую следующее из поиска Google по теме:

# 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

Это работает, за исключением того, что испортил файлправа доступа и группа: владелец.

Как сохранить исходную информацию?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2010

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}, чтобы восстановить, если замена идет не так, как надо.

2 голосов
/ 14 сентября 2010

Вы можете использовать «кошка».
cat ${file}.new > ${file} && rm ${file}.new

...