13.08.2008

Очистка html файла от избыточных тегов

Практические все современные текстовые процессоры могут конвертировать файлы любого формата который они поддерживают в html. Однако качество конвертирования оставляет желать лучшего (особенно у MS Word), как правило документы создавался без использования стилей, это приводит к тому, что даже в одном абзаце может применяться несколько стилей. Приблизительно 30-50% объёма такого документа - избыточные теги, описание стилей, которые абсолютно не нужны для передачи смысла документа, а фоматирование всегда можно осуществить с помощью стандартных тегов языка html.

Таким образом имеем задачу: очистить файл в формате html от лишних тегов с минимумом ручных операцый и, очень желательно, с возможностью пакетной обработки.

Порывшись в сети нашел довольно простое решение проблемы - скрипт на Питоне.
скачаный файл переименовываем
mv clean.txt clean.py


пользоваться скриптом очень просто:
python clean.py input.html > output.html

input.html - исходный файл, output.html - файл после работы скрипта.

08.08.2008

Скрипт для сканирования локальной сети

Скрипт для сканирования локальной сети на предмет включенных машин (если они конечно полностью не закрыты фаерволом):


#!/bin/sh

NET=${1}

if [ -z ${NET} ]; then

echo 'Usage:'
echo ' scan.sh first_4_octets'
echo ''
echo 'Example:'
echo ' scan.sh 192.168.16.0'
echo ''

else

echo "Finding hosts in net ${NET}.0/24"
echo ''
echo 'Found hosts:'
for host in `seq 1 254`; do
if (ping -c 3 ${NET}.${host} > /dev/null 2> /dev/null) then
echo ${NET}.${host}
fi
done

fi


Скрипт: транслитерация + удаление пробелов + удаление последовательности "_-_"

Объединил два предыдущих скрипта, плюс добавил удаление такого распространённого артефакта как: "_-_", который очень часто появляется после переименования mp3 файлов.
Например есть файл:
Исполнитель - Имя композиции.mp3
После транслитерации и замены пробела сплэшем получаем:
Ispolnitel'_-_Imya_kompozicii.mp3
После включения в скрипт строки TRS=${TRS//_-_ /-}; получаем:
Ispolnitel'-Imya_kompozicii.mp3
Скрипт работает рекурсивно, от текущей дирректории.
Теперь сам скрипт:

#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# файлов и каталогов в транслит.

shopt -s nullglob
for NAME in *
do
TRS=`echo $NAME |tr : _`
TRS=${TRS//А/A};
TRS=${TRS//а/a};
TRS=${TRS//Б/B};
TRS=${TRS//б/b};
TRS=${TRS//в/v};
TRS=${TRS//В/V};
TRS=${TRS//г/g};
TRS=${TRS//Г/G};
TRS=${TRS//д/d};
TRS=${TRS//Д/D};
TRS=${TRS//е/e};
TRS=${TRS//ё/yo};
TRS=${TRS//Ё/Yo};
TRS=${TRS//ж/zh};
TRS=${TRS//Ж/Zh};
TRS=${TRS//з/z};
TRS=${TRS//З/Z};
TRS=${TRS//и/i};
TRS=${TRS//И/I};
TRS=${TRS//й/j};
TRS=${TRS//Й/J};
TRS=${TRS//к/k};
TRS=${TRS//К/K};
TRS=${TRS//л/l};
TRS=${TRS//Л/L};
TRS=${TRS//м/m};
TRS=${TRS//М/M};
TRS=${TRS//н/n};
TRS=${TRS//Н/N};
TRS=${TRS//о/o};
TRS=${TRS//О/O};
TRS=${TRS//п/p};
TRS=${TRS//П/P};
TRS=${TRS//р/r};
TRS=${TRS//Р/R};
TRS=${TRS//с/s};
TRS=${TRS//С/S};
TRS=${TRS//т/t};
TRS=${TRS//Т/T};
TRS=${TRS//у/u};
TRS=${TRS//У/U};
TRS=${TRS//ф/f};
TRS=${TRS//Ф/F};
TRS=${TRS//х/h};
TRS=${TRS//Х/H};
TRS=${TRS//ц/c};
TRS=${TRS//Ц/C};
TRS=${TRS//ч/ch};
TRS=${TRS//Ч/Ch};
TRS=${TRS//ш/sh};
TRS=${TRS//Ш/Sh};
TRS=${TRS//щ/sch};
TRS=${TRS//Щ/Sch};
TRS=${TRS//э/e};
TRS=${TRS//Э/E};
TRS=${TRS//ю/ju};
TRS=${TRS//Ю/Ju};
TRS=${TRS//я/ya};
TRS=${TRS//Я/Ya};
TRS=${TRS//ъ/\`};
TRS=${TRS//Ъ/\`};
TRS=${TRS//ь/\'};
TRS=${TRS//Ь/\'};
TRS=${TRS//ы/y};
TRS=${TRS//Ы/Y};
TRS=${TRS// /_};
TRS=${TRS//_-_ /-};
if [[ `file -b "$NAME"` == directory ]]; then
mv -v "$NAME" "$TRS"
cd "$TRS"
"$0"
cd ..
else

mv -v "$NAME" "$TRS"
fi
done