URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8727
[ Назад ]

Исходное сообщение
"bash и разбор строки"

Отправлено soccer , 11-Май-10 21:38 
Есть такая строка.
<div class="feedurl" style="word-wrap: break-word; width:550px;">http://trak.in/feed</div></td></tr><tr&... </td></tr>

Какв bash скрипте извлечь из данной строки url?


Содержание

Сообщения в этом обсуждении
"bash и разбор строки"
Отправлено начинающиий , 11-Май-10 22:22 
>Есть такая строка.
><div class="feedurl" style="word-wrap: break-word; width:550px;">http://trak.in/feed</div></td></tr><tr&... </td></tr>
>
>Какв bash скрипте извлечь из данной строки url?

Например, так
sed "s/<div [^>]*>\([^<]*\)<\/div>.*/\1/"
А вообще, лучше специальную библиотеку для xml использовать на перле или питоне.


"bash и разбор строки"
Отправлено Pahanivo , 12-Май-10 07:34 
>>Есть такая строка.
>><div class="feedurl" style="word-wrap: break-word; width:550px;">http://trak.in/feed</div></td></tr><tr&... </td></tr>
>>
>>Какв bash скрипте извлечь из данной строки url?
>
>Например, так
>sed "s/<div [^>]*>\([^<]*\)<\/div>.*/\1/"
>А вообще, лучше специальную библиотеку для xml использовать на перле или питоне.
>

html != xml (вроде)


"bash и разбор строки"
Отправлено начинающиий , 13-Май-10 18:52 
>>А вообще, лучше специальную библиотеку для xml использовать на перле или питоне.
>>
>
>html != xml (вроде)

Для объектных библиотек !=,  а  для линейных почти что по барабану.


"bash и разбор строки"
Отправлено Andrey Mitrofanov , 12-Май-10 17:24 
|egrep -io "<div [^>]*class=\"feedurl\"[^>]*>[^<]+</div>" |egrep -o ">[^<]+<" |egrep -o "[^<>]+"

|awk 'match($0,"<div [^>]*class=\"feedurl\"[^>]*>([^<]+)</div>",aa){print aa[1]}'

XX="${IN#*>http://}"; XX="${XX%</div>*}"; OUT="http://$XX"

Как-то так...


"bash и разбор строки"
Отправлено JohnProfic , 12-Май-10 21:34 
>Есть такая строка.
><div class="feedurl" style="word-wrap: break-word; width:550px;">http://trak.in/feed</div></td></tr><tr&... </td></tr>
>
>Какв bash скрипте извлечь из данной строки url?

А такое считается башем? :)
$ echo "<div class="feedurl" style="word-wrap: break-word; width:550px;">http://trak.in/feed</div></td></tr><tr&... </td></tr>" | php -r "echo trim(fgetss(STDIN));"
http://trak.in/feed
$ _


"bash и разбор строки"
Отправлено Andrey Mitrofanov , 12-Май-10 21:46 
>А такое считается башем? :)
> | php -r "echo trim(fgetss(STDIN));"

Мастер! :)))

> |sed 's/<[^>]\+>//g'


"bash и разбор строки"
Отправлено pavlinux , 13-Май-10 02:43 
>>А такое считается башем? :)
>> | php -r "echo trim(fgetss(STDIN));"
>
>Мастер! :)))
>
>> |sed 's/<[^>]\+>//g'

1. ... | cut -d '>' -f2,2 | cut -d '<' -f1
2. ... | lynx --stdin -dump
3. ... | urlview
4. ... | sed -e 's/<[^>]\+[^<]//g'
5. ... | awk 'BEGIN { FS = ">"; RS = "<" }; {print $2}'


"bash и разбор строки"
Отправлено Sphynkx , 27-Окт-10 03:25 

perl -e '$a="<div class=\"feedurl\" style=\"word-wrap: break-word; width:550px;\">http://trak.in/feed</div></td></tr><tr&... </td></tr>"; @a=split("[><]",$a); foreach (@a) {print $_,"\n" if /http/;}'

"bash и разбор строки"
Отправлено Sugar , 27-Окт-10 14:33 
> perl -e '$a="<div class=\"feedurl\" style=\"word-wrap: break-word; width:550px;\">http://trak.in/feed</div></td></tr><tr&...
> </td></tr>"; @a=split("[><]",$a); foreach (@a) {print $_,"\n" if /http/;}'

или так:
| perl -le '$a = <>; $a =~ />(\S+)<\/div/; print $1'


"bash и разбор строки"
Отправлено Archer Godson , 06-Июл-12 16:01 
>> perl -e '$a="<div class=\"feedurl\" style=\"word-wrap: break-word; width:550px;\">http://trak.in/feed</div></td></tr><tr&...
>> </td></tr>"; @a=split("[><]",$a); foreach (@a) {print $_,"\n" if /http/;}'
> или так:
> | perl -le '$a = <>; $a =~ />(\S+)<\/div/; print $1'

я извлёк сами гиперссылки так:
| grep "http://" | sed 's/^.*http/http/g' | grep -o "http://[a-z\.]*"


"bash и разбор строки"
Отправлено Archer Godson , 06-Июл-12 16:05 
>>> perl -e '$a="<div class=\"feedurl\" style=\"word-wrap: break-word; width:550px;\">http://trak.in/feed</div></td></tr><tr&...
>>> </td></tr>"; @a=split("[><]",$a); foreach (@a) {print $_,"\n" if /http/;}'
>> или так:
>> | perl -le '$a = <>; $a =~ />(\S+)<\/div/; print $1'
> я извлёк сами гиперссылки так:
> | grep "http://" | sed 's/^.*http/http/g' | grep -o "http://[a-z\.]*"

даже так хватит:
| grep -o "http://[a-z\.]*"
чёт я ступил ))
наверное ещё и русские домены есть смысл искать, да и написаны они могут быть  большими буквами, тогда:
| grep -o "http://[a-zA-Zа-яА-Я\.]*"