LINUX.ORG.RU
ФорумAdmin

программа для автоматизации процесса поиска и замены текста в веб-страницах


0

1

Какая есть хорошая программа для автоматизации процесса поиска и замены текста в веб-страницах .htm?
Программа нужна по причине того, что *#*%# веб-броузер сохранил странички и каталоги на диск, но при открытии их броузером на другом ПК, он странички показывает “голые”, т.е. без картинок, хранящихся в связанной папке. Приходится открывать каждую страницу в BlueFish и править название каталога (абракадабракаталог_files) со всеми картинками на правильное, а не то, которое указал *#*%# веб-броузер.
Я так понимаю, что придется писать скрипт для Bash.
Как автоматизировать процесса поиска-замены текста в веб-страницах .htm, а именно написания названия файлов картинок и других элементов, так как они сохранены на диске в связанном каталоге, т.е. в таком же чередовании прописных и строчных литер, а то в Linux это критично?
Я немного попробовал что-то написать, но уперся в проблему присвоения переменной значения из файла.
Например, нужно присвоить переменной «i» результат выполнения команды
find -type f -name «*.htm*» -print | grep -c .htm или прочесть его из файла out
find -type f -name «*.htm*» -print | grep -c .htm > out ,
которая подсчитывает кол-во веб-страниц в указанном каталоге.
Далее начинается цикл обработки каждой страницы из этого каталога, т.е. как-то необходимо организовать поиск и замену в каждой странице, которая упоминается в отдельной строке файла out 'абракадабракаталог_files' на 'каталог_files'.
Необходимо искать каждое упоминание, например “%12%3E%3F%40%3Eс_files” в веб-странице «Вопрос.htm» и менять левую часть (название каталога) на «Вопрос_files».
Нужно построчно читать название каждой веб-страницы из файла out, присвоить переменной, далее отрезать хвостик .htm, заменить его на “название веб-страницы_files” открыть эту веб-страницу произвести поиск-замену и сохранить изменения.
Кто-то что-то может посоветовать? Какие команды (инструменты) использовать?

Количество *.htm файлов в папке /path подсчитывают команды
find /path -type f -name «*.htm*» -print | grep -c .htm
find /path -type f -name *.htm | wc -l
Нужно переменной, например list, присвоить результат выполнения хотя бы одной из них.
КАК ЭТО СДЕЛАТЬ?
Объясняю детально.
Например, у Вас в каталоге /path лежит 10 файлов *.htm и связанных с ними каталогов с картинками и т.п.
Вы хотите
получить список всех необходимых файлов благодаря
   ls /path *.htm > out-spisok
подсчитать кол-во файлов *.htm
   find /path -type f -name «*.htm*» -print | grep -c .htm ИЛИ
   find /path -type f -name *.htm | wc -l
присвоить переменной. например list ПОЛУЧЕННОЕ от одной из вышеуказанных команд значение (10)
   КАК??????????
организовать цикл обработки каждой *.htm страницы (файла) из этого каталога
   var=«1»
   # пока var меньше или равно переменной list (кол-ва веб страниц)
   while [ $var -le $list ]
   do
   5) …......
   9) …......
   var=$[$var+1]
   done

там, где …...... д.б.
присвоить переменной, например webfile 1-е (потом 2-е и т.д.) значение из списка out-spisok
   sed -n $var,+0p out-spisok
   КАК??????????
поиск 1-го значения '_files' в webfile
определение начала и конца 'абракадабракаталог_files' без '_files'
   В *.htm файле название каталога находится между =” и _files
   КАК??????????
присвоение переменной poisk 'абракадабракаталог'
   poisk = 'абракадабракаталог'
замена во всем файле webfile 'абракадабракаталог' на 'правильныйкаталог_files', где 'правильныйкаталог' (foldernew) совпадает с названием страницы и каталога на диске в папке /path и равно
   foldernew = $webfile (без '.htm') +'_files'
   sed s/$poisk/$foldernew/g $webfile > $webfile-out
конец цикла
Проблемы
Как в bash скрипте сделать, ЕСЛИ ЭТО ВОЗМОЖНО
присвоение переменной результата выполнения команды или последовательности команд (пайпа)
определение начала и конца искомого значения в тексте ('абракадабракаталог_files') и его «вырезание» и присвоение переменной


вам нужен sed и всё
sed -i 's/ старая строка/новая срока/g' **/*.html

zolden ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.