2012-01-09 2 views
0

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

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

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

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

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

ответ

1

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

find /home -type f -name "*.html" -exec sed -i '/<TXT_accesp>/,/<\/TXT_accesp>/ s/<p>\(.*\)<\/p>$/\1/g' {} \; 
2

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

Смежные вопросы