LINUX.ORG.RU

Нужна помощь в преобразовании

 , ,


0

2

Доброго всем времени суток!

Есть распарсенный текст с web страницы lyrics.wikia.com/wiki/Artist:Song в виде:

'Cause I'ma be the one 't
Подскажите как его, желательно через bash, привести к нормальному тексту: «'Cause I'ma be the one 't»


echo ''Cause I'ma be the one 't' | recode html..ascii
'Cause I'ma be the one 't
iu0v1
()

ну или perl

echo ''Cause I'ma be the one 't' | perl -MHTML::Entities -pe 'decode_entities($_);'
mix_mix ★★★★★
()
python -c "import HTMLParser;HTMLParser.HTMLParser().unescape(...)"
anonymous
()
Ответ на: комментарий от iu0v1

Спасибо, помогло, правда минусом идет зависимость от утилиты recode.

Вариант с perl менее зависимый получается (ибо идет в стандартной поставке Debian).

Остается только определиться с решением.

Faiver
() автор топика

Если желательно именно на ГНУ Баше, то как-то так:

#!/bin/bash

string="$1"

IFS=';' read -a array_of_dec <<< "$string"
for dec in "${array_of_dec[@]}"; do
    printf -v esc_oct '\%03o' "${dec#&#}"
    printf "$esc_oct"
done
printf '\n'
Zmicier ★★★★★
()

На голом перле без модулей:

 echo "&#39;&#67;&#97;&#117;&#115;&#101;&#32;&#73;" | perl -p -e 's/&#(.+?);/chr($1)/ge'

Stanson ★★★★★
()

На баше без всего:

echo "&#39;&#67;&#97;&#117;&#115;&#101;;&#32;&#98;" | tr ';' '\n' | while read V ; do printf $(printf "\%03o" ${V#&#}) ; done

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.