Выборка URL из файла типа xml.

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 8:46:10

Поставлена задача сделать скрипт, который делает выборку URL и IP, сортирует строки и выгружает в разные текстовые файлы. По выборке IP адресов сделал скрипт - работает.
Исходный файл такой:

Код: Выделить всё

 <?xml version="1.0" encoding="windows-1251" ?> 
- <reg:register updateTime="2013-03-27T06:09:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru">
- <content id="60" includeTime="2013-01-12T16:33:38">
  <decision date="2012-11-03" number="14-РИ" org="Роскомнадзор" /> 
- <url>
- <![CDATA[ http://s4.artemisweb.jp/settoto/
  ]]> 
  </url>
- <domain>
- <![CDATA[ s4.artemisweb.jp
  ]]> 
  </domain>
  <ip>124.35.0.146</ip> 
  </content>
Часть текста от - <content id до </content> повторяется несколько сотен раз, но там разные URL и IP.
Выходной файл должен быть такого формата:

Код: Выделить всё

1magehut.com/users.php?act=gallery&gal=81&page=4
23krasnodar.net/kuritelnyie-smesi/
27habarovsk.net
27habarovsk.net/
27habarovsk.net/analogi-jwh/
27habarovsk.net/hypnotic-gipnotik-2012/
27habarovsk.net/tag/green-pills/
34volgograd.net/
34volgograd.net/
34volgograd.net/kuritelnyie-smesi/
34volgograd.net/tag/kuritelnye-smesi/
Вот прошу помощи у Вас. Может дадите пример скрипта который мог бы делать выборку такого текста наподобие

Код: Выделить всё

s4.artemisweb.jp/settoto/
и выгружал бы их построчно в отдельный файл.
С огромной надеждой, а то дня два как :st: .
Последний раз редактировалось f_andrey 2013-03-27 10:02:49, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 11:35:17

Пока могу получить текст CDATA и http:// из исходного файл через команду

Код: Выделить всё

cat dump.xml | grep -o '\http://\+' > urlb.txt
.
не получается подобрать условие выборки так чтоб выбирал с http:// и до первых двойный квадратных скобок идущие после url. Но нифига пока.... :cz2:

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-27 13:20:04

Код: Выделить всё

- <![CDATA[ s4.artemisweb.jp
  ]]
Какие конкретно разделители между CDATA[%ТУТ%URL%И_ТУТ%]] ? Пробелы ?
Да шо ему сделается...

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 14:02:43

в редакторе вижу так:

Код: Выделить всё

<url><![CDATA[http://s4.artemisweb.jp/settoto/]]>
Т.е. пробелов нет.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-27 14:40:09

если файл не меняется и только адреса другие, то попробуйте

Код: Выделить всё

cat dump.xml | grep -o '\http://\+' | cut -d '[' -f3 | cut -d ']' -f1 > urlb.txt
Да шо ему сделается...

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 14:52:34

Попробовал..
в итоге получил 583 строки такого вида:

Код: Выделить всё

http://
http://
http://
http://
http://
http://

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 15:02:09

ради интереса посмотрел файл Notepad+.
он выдал своим поиском:

Код: Выделить всё

Search "http://" (579 hits in 1 files)

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-27 16:01:08

Код: Выделить всё

cat dump.xml | grep -o '\http://\+' > urlb.txt
покажите пожалуйтса пару строк из файла urlb.txt
Да шо ему сделается...

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-27 17:53:18

Код: Выделить всё

cat dump.xml | grep -o '\http://\+' > urlb.txt
Они такого вида

Код: Выделить всё

http://
http://
Если так

Код: Выделить всё

cat dump.xml | grep -o '\CDATA\+' > urlb.txt
то:

Код: Выделить всё

CDATA
CDATA

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-27 20:52:41

Хмм.. Хорошо,

Код: Выделить всё

cat dump.xml  | less
Хочется посмотреть как он выводится в консоли.

Ведь если

Код: Выделить всё

cat dump.xml | grep -o '\CDATA\+' > urlb.txt
выдаёт только CDATA, значит в разных строках...
Да шо ему сделается...

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-28 5:37:51

Файл xml и он,например, в редакторе Notepad+ в режиме редактора(F4) показывает одну строку, а в режиме чтения(F3) показывае каждое поле как строка.
Вот что увидел по команде

Код: Выделить всё

cat dump.xml  | less
<?xml version="1.0" encoding="windows-1251"?><reg:register updateTime="2013-03-26T06:09:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru"><content id="60" includeTime="2013-01-12T16:33:38"><decision date="2012-11-03" number="14-<F2><E9>" org="<F2><CF><D3><CB><CF><CD><CE><C1><C4><DA><CF>
<D2>"/><url><![CDATA[http://s4.artemisweb.jp/settoto/]]></url><domain><![CDATA[s4.artemisweb.jp]]></domain><ip>124.35.0.146</ip></content><content id="68" includeTime="2012-11-09T10:21:34"><decision date="2012-11-03" number="9" org="<F2><CF><D3><D0><CF><D4><D2><C5><C2><CE><C1><C4><DA><CF><D2>"/><url><![CDATA[http://fast-die.kiev.ua/index.php]]></url><domain><![CDATA[fast-die.kiev.ua]]></domain><ip>77.87.193.143</ip></content><content id="82" includeTime="2012-11-11T14:14:15"><decision date="2012-11-04" number="2/1/16392" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.narkop.biz/]]></url><domain><![CDATA[narkop.biz]]></domain><ip>188.40.93.186</ip></content><content id="85" includeTime="2012-11-11T14:54:24"><decision date="2012-11-04" number="2/1/16412" org="<E6><F3><EB><EE>"/><url><![CDATA[http://growclub.org]]></url><domain><![CDATA[growclub.org]]></domain><ip>94.76.232.2</ip></content><content id="93" includeTime="2012-11-11T15:21:42"><decision date="2012-11-04" number="2/1/16396" org="<E6><F3><EB><EE>"/><url><![CDATA[http://bigdiller.com]]></url><domain><![CDATA[bigdiller.com]]></domain><ip>46.165.197.65</ip></content><content id="97" includeTime="2012-11-10T18:46:06"><decision date="2012-11-04" number="2/1/16404" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.narkotiki.name/]]></url><domain><![CDATA[narkotiki.name]]></domain><ip>188.40.120.113</ip></content><content id="98" includeTime="2012-11-10T18:47:48"><decision date="2012-11-04" number="2/1/16424" org="<E6><F3><EB><EE>"/><url><![CDATA[http://tor4.su/]]></url><domain><![CDATA[tor4.su]]></domain><ip>176.9.16.90</ip></content><content id="103" includeTime="2012-11-11T15:33:38"><decision date="2012-11-04" number="2/1/16407" org="<E6><F3><EB><EE>"/><url><![CDATA[http://www.shram.kiev.ua/fun/ganja.shtml]]></url><domain><![CDATA[shram.kiev.ua]]></domain><ip>193.200.173.204</ip></content><content id="105" includeTime="2012-11-11T15:39:37"><decision date="2012-11-04" number="2/1/16402" org="<E6><F3><EB><EE>"/><url><![CDATA[http://go-krit.com/workshop/]]></url><domain><![CDATA[go-krit.com]]></domain><ip>62.75.182.189</ip></content>
:

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-28 11:05:12

Раз в одну строку тогда как-то так

Код: Выделить всё

cat dump.xml  | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1
Да шо ему сделается...

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-28 11:16:39

gumeniuc писал(а):Раз в одну строку тогда как-то так

Код: Выделить всё

cat dump.xml  | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1

ОГРОМНОЕ СПАСИБО за оказанную помощь!!!

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение vadim64 » 2013-03-28 13:34:47

ребята, извините конечно, может оффтоп, но всё же:
вы вообще в курсе для чего и почему был изобретён xml? вам не кажется что он как то херово подходит для того, чтобы парситься вот так вот?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-28 13:52:40

Можете предложить ещё проще обработку файла xml ?

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение vadim64 » 2013-03-28 14:00:29

я не уверен что вам это подойдёт
если вы знакомы с каким нибудь питоном или пыхом, то через него вы можете пользоваться специальными классами для работы с xml
если вам это недоступно, то можете погуглить на тему xml-coreutils, там есть тулзы аля xml-cat, xml-grep и т.д. ну вы поняли что они делают, наверное. названия должны подсказать.
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение vadim64 » 2013-03-28 14:02:09

щас увидел что вы нашли своё решение, можете проигнорировать мои сообщения
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Vlad5503
сержант
Сообщения: 212
Зарегистрирован: 2010-03-25 5:41:41

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение Vlad5503 » 2013-03-28 14:06:01

Ну почему? Спасибо, я почитаю про "xml-coreutils, там есть тулзы аля xml-cat, xml-grep и т.д.".
Учиться никогда не поздно....
Если скинете ссылочки где есть описание и примеры(чтоб долго не искать) или Ваши примеры по обработке xml, буду признателен.

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение vadim64 » 2013-03-28 14:19:35

к сожелению не имел практического знакомства с этими штуками, запомнил просто из какой то статьи-обзора возможностей xml
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение gumeniuc » 2013-03-28 14:34:59

vadim64,

Согласен конечно, что с xml так работать в корне неверно. Вот от Вас первый раз услышал про xml-grep, почитаю на досуге. Тот же Perl конечно умеет правильно работать с xml, но тут видимо речь шла про shell в одну строку.
Да шо ему сделается...

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Выборка URL из файла типа xml.

Непрочитанное сообщение vadim64 » 2013-03-28 14:52:44

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

brainiac
рядовой
Сообщения: 29
Зарегистрирован: 2011-05-10 14:59:08

Выборка URL из файла типа xml.

Непрочитанное сообщение brainiac » 2016-12-13 16:13:32

gumeniuc писал(а):Раз в одну строку тогда как-то так

Код: Выделить всё

cat dump.xml  | tr \> \\n | grep "\[CDATA\[http" | cut -d '[' -f3 | cut -d ']' -f1
Раз плюсануть нельзя, то просто скажу "спасибо"!