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') и его «вырезание» и присвоение переменной

2

sed скрипт нужен. если я правильно понял, то у меня такой скрипт уже есть.
http://drbatty.ru/sed/ch04s14.html

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3

1) присвоить переменной значение от команды
VAR=`command`
или лучше
VAR=$(command)
2) если вы пишете sed скрипт внутри bash скрипта, то заключите его в одиночные кавычки, иначе этот скрипт будет разрезан на куски и преобразован bash'ем. Что-бы передать внутрь скрипта переменную bash используйте двойные кавычки. Но тогда в таком скрипте нельзя писать что угодно,

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)