Какая есть хорошая программа для автоматизации процесса поиска и замены текста в веб-страницах .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') и его «вырезание» и присвоение переменной
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум bash как переименовать файлы? (2017)
- Форум Изменение имени файлов в скрипте. (2018)
- Форум Нужна помощь в консольной магии (2012)
- Форум пробелы в консольных командах (2011)
- Форум Помогите новичку пожалуйста :) (2010)
- Форум Откуда берутся эти строки (2019)
- Форум Подскажите новичку - скрипт для оболочки BASH (2011)
- Форум Сортировка строк (2014)
- Форум Нужна помощь с bash скриптом, нужна отмена вывода ошибки (2022)
- Форум Скрипт для проверки актуальности программных лицензий 1С (2020)