использование sed для замены содержимого файла не работает в скрипте bash - PullRequest
0 голосов
/ 08 октября 2010

У меня есть следующее sed -e 's/<em\:update.*//g' install.rdf > install.rdf в bash-скрипте, и оно работает в командной строке, но в bash-скрипте install.rdf заканчивает пустой файл., затем из файла удаляются 2 строки.

Есть идеи, почему sed -e 's/<em\:update.*//g' install.rdf > install.rdf не работает в скрипте bash?

1 Ответ

6 голосов
/ 08 октября 2010

Попробуйте это:

sed -i -e 's/<em\:update.*//g' install.rdf

Когда вы перенаправляете вывод в файл в режиме усечения, файл усекается в первую очередь, прежде чем он будет прочитан. Таким образом, результатом является пустой файл. Использование sed -i позволяет избежать этого.

Портативное (и, надеюсь, не слишком небезопасное) решение:

(set -C &&
 sed -e 's/<em\:update.*//g' install.rdf > install.rdf.$$ &&
 mv install.rdf.$$ install.rdf)

: -)

...