2016-11-03 6 views
0

В дополнение к решению в Extract data between two tags, из которого извлекается один набор CIDR, теперь мы просто сталкиваемся с чем-то более сложным.Извлечение нескольких данных между несколькими тегами

результат, возвращаемый выглядит следующим образом:

<tr><td class='bold vmiddle'> Owner CIDR: </td><td><span class='jtruncate-text'><a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIyNS4w">80.245.225.0</a>/24, <a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIyNi4w">80.245.226.0</a>/23, <a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIyOC4w">80.245.228.0</a>/22, <a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIzMi4w">80.245.232.0</a>/22, <a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIzNi4w">80.245.236.0</a>/23, <a href="http://3.abcdefg.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvODAuMjQ1LjIzOC4w">80.245.238.0</a>/24</span></td></tr> 

Он имеет 6 CIDR:

80.245.225.0/24, 80.245.226.0/23, 80.245.228.0/22, 80.245.232.0/22 , 80.245.236.0/23, 80.245.238.0/24

Фактически, для других запросов мы не знаем, сколько CIDR будет возвращено.

Какое решение в bash мы должны использовать? Развернуть строку sed в связанном вопросе? Или что-то совсем другое?

Может ли кто-нибудь помочь?

+0

Я предлагаю использовать парсер XML/HTML (xmllint, xmlstarlet ...). – Cyrus

ответ

1

Возможно, это может вам помочь;

grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}</a>/[0-9]{1,2}' yourFile | sed 's/<\/a>//' 

Например;

[email protected]:/tmp$ grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}</a>/[0-9]{1,2}' test | sed 's/<\/a>//' 
80.245.225.0/24 
80.245.226.0/23 
80.245.228.0/22 
80.245.232.0/22 
80.245.236.0/23 
80.245.238.0/24 
+0

Отлично! Очень универсальный! – charleslcso

Смежные вопросы