Использование sed на shell-скриптах для нескольких файлов - PullRequest
3 голосов
/ 13 октября 2010

Привет, дружелюбные люди, работающие на компьютере,

Это вопрос из двух частей.Я пишу два сценария оболочки с целью «найти и заменить» во всех файлах index.php в папке и ее подпапках.

Первый сценарий оболочки такой:

echo "running on all directories…"

find . -name '*.php' -exec ./search_replace.sh {} \;

, который затем запускает файл search_replace:

echo "running search and replace script..."

sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' index.php > index.htm

Мои проблемы / вопросы заключаются в следующем:

  1. Когда я запускаю первый скрипт, он выводит "запущенный поиски заменить скрипт ... "13 раз, что имеет смысл, потому что в папках 13 файлов index.php.Но в результате получается, что завершен только один файл, т. Е. Слова заменяются, а новый файл htm создается только один раз.

  2. Есть ли способ сделать это так, чтобы вместо создания нового.htm файл, основанный на .php файле, я могу просто иметь тот же файл index.php с заменой слов?Другими словами, они могут редактировать файл, не создавая новый.

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 13 октября 2010

Поскольку полный путь отправляется на ваш search_replace.sh, вы можете заменить index.php на $ 1, index.htm на $ 1.htm, а затем

mv $1.htm $1

как строка после вашего седа

re: ваши комментарии

оригинал

sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' index.php > index.html

строки с / б

sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' $1 > $1.html
mv $1.html $1
0 голосов
/ 13 октября 2010
find . -name '*.php' -type f -exec sed -i 's|http:\/\/ericbrotto.com|file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio|g' "{}" +;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...