Открывайте и сохраняйте изменения с помощью bash - PullRequest
0 голосов
/ 09 января 2012

Я пишу сценарий bash, который находит все файлы расширения .html в каталоге и удаляет все теги <p> </ p>, которые находятся внутри тега <TXT_accesp> </TXT_accesp>.

Пока у меня есть следующий код и пример вывода (через консоль) работает правильно:

for i in $(find /home -name *.html); do sed -e '/<TXT_accesp>/,/<\/TXT_accesp>/ s/<p>\(.*\)<\/p>$/\1/g' $i; done

Проблема в том, что изменения необходимо сохранять в каждом изменяемом файле .html, потому что, как я уже говорил, при запуске вносите изменения, но только через консоль, но не сохраняйте в файле.

От уже большое спасибо всем, кто может мне помочь.

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Проверьте sed справочные страницы. Есть флаг -i, который означает редактирование «на месте» (он изменяет файл вместо отправки вывода на терминал).

1 голос
/ 09 января 2012

Вам не нужен цикл for, вы можете использовать опцию -exec команды find для замены.

find /home -type f -name "*.html" -exec sed -i '/<TXT_accesp>/,/<\/TXT_accesp>/ s/<p>\(.*\)<\/p>$/\1/g' {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...