синтаксис sed для удаления xml

Я пытаюсь очистить этот вывод от метаданных, чтобы подключить этот вывод к GreekTools, но я застрял на sed.

curl --silent www.brainyquote.com | egrep '(span class="body")|(span class="bodybold")' | sed -n '6p; 7p; ' | sed 's/<*>//g'

[ex]

<span class="body">Literature is news that stays news.</span><br>
<span class="bodybold">Ezra Pound</span>

может кто-нибудь помочь мне на этом треке?

17
задан mbb
18.04.2023 18:38 Количество просмотров материала 3088
Распечатать страницу

2 ответа

вы действительно должны использовать правильный HTML или XML инструмент разбора. Попытка разобрать его регулярными выражениями приводит к безумие.

однако, для простых случаев:

curl --silent www.brainyquote.com | egrep 'span class="body' | sed -n '6,7{s/<[^>]*>//g;p}'

для OS X:

curl --silent www.brainyquote.com | egrep 'span class="body' | sed -n '6,7{' -e 's/<[^>]*>//g' -e 'p' -e '}'

это работало для mjb:

curl --silent www.brainyquote.com | egrep '(span class="body")|(span class="bodybold")' | sed -n '6p; 7p; ' | sed -e 's/<[^>]*>//g'
1
отвечен Dennis Williamson 2023-04-20 02:26

только для полноты, решение с использованием HTML tidy и xmlstarlet:

# note: use recent versions of tidy and xmlstarlet
curl -s www.brainyquote.com | 
tidy -q -c -wrap 0 -numeric -asxml -utf8 --merge-divs yes --merge-spans yes 2>/dev/null |
xmlstarlet sel -N x="http://www.w3.org/1999/xhtml" -T -t -m "//x:td[@align='center' and @valign='top' and @width='300']/x:span[@class='body']" -v '.' -n \
-m "//x:html/x:body/x:div/x:table/x:tr[position()=2]/x:td[@align='center' and @valign='top' and @width='300']/x:span[@class='bodybold']" -v '.' -n
1
отвечен tim 2023-04-20 04:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх