Этот ответ основан на: Коротком способе избежать HTML в Bash? , который отлично подходит для получения ответов (используя wget
) на Stack Exchange и преобразования HTML в обычные символы ASCII:
sed 's/ / /g; s/&/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/#'/\'"'"'/g; s/“/\"/g; s/”/\"/g;'
Редактировать 1: 7 апреля 2017 г. - Добавлена конвертация левой двойной кавычки и правой двойной кавычки.Это часть bash-скрипта, который веб-утилиты отбрасывает ответы SE и сравнивает их с локальными файлами кода здесь: Ask Ubuntu - Контроль версий кода между локальными файлами и Ask Ubuntu отвечает
Редактировать26 июня 2017 г.
Использование sed
заняло ~ 3 секунды для преобразования HTML в ASCII для файла строки размером 1 КБ из Ask Ubuntu / Stack Exchange.В связи с этим я был вынужден использовать встроенный поиск Bash и заменить его на ~ 1 секунду времени отклика.
Вот функция:
#-------------------------------------------------------------------------------
LineOut="" # Make global
HTMLtoText () {
LineOut=$1 # Parm 1= Input line
# Replace external command: Line=$(sed 's/&/\&/g; s/</\</g;
# s/>/\>/g; s/"/\"/g; s/'/\'"'"'/g; s/“/\"/g;
# s/”/\"/g;' <<< "$Line") -- With faster builtin commands.
LineOut="${LineOut// / }"
LineOut="${LineOut//&/&}"
LineOut="${LineOut//</<}"
LineOut="${LineOut//>/>}"
LineOut="${LineOut//"/'"'}"
LineOut="${LineOut//'/"'"}"
LineOut="${LineOut//“/'"'}" # TODO: ASCII/ISO for opening quote
LineOut="${LineOut//”/'"'}" # TODO: ASCII/ISO for closing quote
} # HTMLtoText ()