bash add html footer. добавить свой текст сразу в несколько файлов. работа с текстом в bash.


Скажу сразу, что не горжусь тем, что сделал, но пользу может принести пример.

Иногда возникает необходимость добавить свой текст сразу в несколько файлов.
Например, есть баш туториал
А мне надо в конец каждой страницы добавить информацию о том,
что данный великий труд находится на моём жалком ресурсе.
Да не просто поставить, а вставить перед последними тегами </body> </html>

И как это сделать? ( ll abs-guide/*.html |wc -l целых 101 страниц! )
Неужели в ручную добавлять свой кусок к каждому файлу?!

Это не наш метод! Мы же перечитали этот самый туториал вдоль и поперек!
Пишем скрипт:

#!/bin/bash
# переименовываем все name.html в NAME.HTML:
for x in *.html; do mv $x `echo $x | tr [a-z] [A-Z]`; done
# Выводим .HTML файл без тегов </body> и </html> и наш ../footer.html в файл с тем же именем, но уже .html
for x in *.HTML;
do
cat $x |grep -ivE '</body|</html' > `echo $x | tr [A-Z] [a-z]`
# или еще вариант:
# cat $x |sed '/<\/[bB][oO][dD][yY]/q'| sed 's/<\/[bB][oO][dD][yY]*.//'
# то есть выводим до body или BODY, удаляем сам body.
# можно оптимизировать скрипт до бесконечности, пока не останется только 1 строка на perl =) 
cat ../footer.html >> `echo $x | tr [A-Z] [a-z]`;
wait;
done
# Удаляем старые ФАЙЛЫ за ненадобностью:
rm *.HTML
exit 0;
# end

Чмодим скрипт на выполнение. (обзовем его footer.sh)
Пишем в ../footer.html наш текст о том, что сие нетленное творение
приобрело пристанище на нашем захудалом сайте.
Добавляем в конец </body> и </html>
переходим в директорию с html страницами и оттуда запускаем ../footer.sh
Жем пару минут.
И получаем результат.

P.S. На самом деле, правильнее было `echo $x | tr [A-Z] [a-z]` присвоить какой-нить
переменной, а не юзать по два раза в цикле, но писалось всё как всегда на скорую руку. =)
:wq

P.S. Внесены поправки (было не видно html тегов </body> и </html>).