Когда нужно в тыще файлов
кусок текста заменить
Можно сдуру попытаться
Язык perl вам изучить
Если нет совсем желанья
Программистом вумным стать
Можно просто попытаться
Пост мой ниже дочитать.
(© sanek)
Все, кто занимается сайтами хоть раз да сталкивался с проблемой, когда надо у многих файлов заменить че-нибудь где-нибудь в дизайне, или в тексте или еще где.
Массовый поиск и замена текста в линукс ubuntu меня поставил в тупик. Если раньше в windows я использовал macromedia dremweawer для замены участка кода во множестве html файлах, то ни в одном линуксовском web - редакторе я подобной функции не нашел. Хотя практически уверен, что в каком-нибудь редакторе она есть, но в каком? В общем без фонаря и бутылки ее хрен найдешь.
На помощь, как всегда пришел поиск. Погуглив гугль я нашел программу regexxer, Которая должна искать и заменять все что мне нужно.
Этот пакет есть в репозиториях и устанавливается synaptic`ком.
Что бы запустить прогу надо набрать в консоли "regexxer" или сделать ярлык с такой командой.
- так выглядит программулина.
Поиск можно производить с помощью регулярных выражений perl. Я даже попробывал читать эти все мануалы про регулярные выражения... Голова мнгновенно опухла. Из всего потока информации нужным выделил для себя лишь аргумент (или как его правильно назвать) ".*" - любое количество любых символов. Для массового поиска и замены участков кода (или текста) в файлах мне больше ничего не понадобилось.
Для чего нужны эти регулярные выражения? Чтобы создавать сложные условия для поиска. К примеру вам нужно найти и удалить участок кода в группе файлов, но этот участок немного отличается в каждом файле. И просто так его во всех файлах не розыскать, чтобы потом удалить! Но мы знаем как начинается и как заканчивется нужный нам участок, поэтому в условии поиска пишем "(начало_участка)(.*)(конец_участка)", где начало_участка/конец_участка - несколько символов или слов, в розыскиваемом тексте которые одинаковы во всех изменяемых файлах, а .* - любая последовательность символов между ними.
Что бы regexxer нашел и заменил только первое совпадение с заданным условием, надо убрать галки ./g и ./l .
После того как regexxer найдет во всех файлах нужный участок кода (текста) нужно нажать "all files" для замены во всех файлах. Текст будет заменян на тот, который введен в поле "replace", если поле пустое - то найденный текст удалится.
ps: эта программа понадобится мне для переноса сайта с хостинга/cms ucoz.ru на cms DRUPAL, и свой уже купленный хостинг, об этом невероятном деянии я скоро напишу...
Виктория Che заняла место Ирины Дубцовой?
2 нед. назад

0 коммент.
Отправить комментарий