abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 17:25 | IT novinky

Do prodeje (Farnell) se dostal jednodeskový počítač Tinker Board (unboxing). Jedná se o konkurenci Raspberry Pi 3 od společnosti Asus. Porovnání (jpg) těchto počítačů například na CNXSoft. Cena Tinker Boardu je 55 £.

Ladislav Hagara | Komentářů: 12
včera 14:44 | Zajímavý projekt

Byla zveřejněna pravidla hackerské soutěže Pwn2Own 2017, jež proběhne od 15. do 17. března v rámci bezpečnostní konference CanSecWes ve Vancouveru. Soutěžit se bude o více než milion dolarů v pěti kategoriích. Letos se bude útočit i na Ubuntu. Jedná se již o 10. ročník této soutěže.

Ladislav Hagara | Komentářů: 2
včera 13:33 | Nová verze

Po sedmi měsících vývoje od vydání verze 5.7 byla vydána verze 5.8 (YouTube) toolkitu Qt. Z novinek lze zmínit například Qt Lite pro vestavěná zařízení. Nově jsou plně podporovány moduly Qt Wayland Compositor (YouTube) a Qt SCXML (YouTube). Současně byla vydána verze 4.2.1 integrovaného vývojového prostředí (IDE) Qt Creator.

Ladislav Hagara | Komentářů: 1
včera 11:52 | Pozvánky

Lednový Prague Containers Meetup se koná ve čtvrtek 26. ledna 2017 od 18:00 v Apiary, Pernerova 49, Praha 8. Přijďte se podívat na přednášky o Enterprise Kubernetes a Jenkins as a code.

little-drunk-jesus | Komentářů: 0
včera 11:40 | Pozvánky

Program letošního ročníku konference Prague PostgreSQL Developer Days, která se koná již 15. a 16. února 2017 na ČVUT FIT, Thákurova 9, Praha 6, byl dnes zveřejněn. Najdete ho na stránkách konference včetně anotací přednášek a školení. Registrace na konferenci bude otevřena zítra (24. ledna) v brzkých odpoledních hodinách.

TomasVondra | Komentářů: 0
22.1. 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

Ladislav Hagara | Komentářů: 0
22.1. 02:02 | Komunita

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

Ladislav Hagara | Komentářů: 0
21.1. 22:11 | Nová verze

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
20.1. 17:00 | Nová verze

Byl vydán Docker 1.13. Přehled novinek na YouTube a v poznámkách k vydání na GitHubu. Docker umožňuje běh aplikací v softwarových kontejnerech (Wikipedia).

Ladislav Hagara | Komentářů: 7
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (12%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 391 hlasů
 Komentářů: 37, poslední dnes 12:21
Rozcestník
Reklama

Dotaz: sed parse html tag

TheTechnic avatar 6.4.2010 22:25 TheTechnic | skóre: 7
sed parse html tag
Přečteno: 399×

Ahojte, viete mi poradit ako by sa dal vyparsovat vsetok text zo zdrojoveho kodu html stranky, povedzme ze chcem vsetko text medzi tag-mi <pre> a konciacim jeho tagom </pre>

pricom tieto tagy sa niekolko krat opakuju a chcem vsetko text medzi nimi, vsetko ostatne nejako potrebujem dostat prec.

Odpovědi

Fuky avatar 6.4.2010 22:45 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sed parse html tag
$ cat index.html |sed -n 's/<pre>\(.*\)<\/pre>/\1/p'
TheTechnic avatar 6.4.2010 23:09 TheTechnic | skóre: 7
Rozbalit Rozbalit vše Re: sed parse html tag

super! :) Len problem je v tom, ze mi to nezoberie do ohladu ked mam v zdrojovom kode blok s danym tagom, cize ak mi to nematchne na jedno riadku, tak to nevypise, neviem ako to osetrit? napr.

<pre>aaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
############ </pre>

Proste tagy byvaju rozne zalomene. Diky za echo :)

6.4.2010 23:22 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed parse html tag
Na něco takového není sed vhodný nástroj, i když by k tomu asi nějak znásilnit šel.
TheTechnic avatar 6.4.2010 23:29 TheTechnic | skóre: 7
Rozbalit Rozbalit vše Re: sed parse html tag
vies teda odporucit iny nastroj, s awk by to neslo lahsie? sice vela sa spomina na internete perl, ale ten je pre mna spanielska dolina, zatial skusam pouzit ten sed.
Fuky avatar 7.4.2010 00:13 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sed parse html tag

Jedno z možných řešení je modul lxml pro Python, HTML soubor pošli na vstup následujícímu skriptu:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from lxml import etree

parser = etree.HTMLParser()
tree = etree.parse(sys.stdin, parser)
expr = "//*[local-name() = $name]"
pre_elts = tree.xpath(expr, name="pre")

for pre_elt in pre_elts:
    print pre_elt.text

Pokud používáš distribuci založenou na Debianu musíš mít nainstalovaný balíček python-lxml.

Fuky avatar 7.4.2010 00:18 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sed parse html tag
7.4.2010 00:58 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed parse html tag
Těžko říct, mně by přišlo nejjednodušší napsat si to v C.
7.4.2010 11:11 imploder | skóre: 11
Rozbalit Rozbalit vše Re: sed parse html tag
Příloha:
V perlu:
my $text = join "", <STDIN>;
my @vnitrky = $text =~ /<pre>(.*?)<\/pre>/sg;
foreach (@vnitrky) { print $_; }
7.4.2010 05:05 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
Napr. takto:
sed 's_</pre>_&\n_' SUBOR | sed -nr -e \
'/<pre>/{:a;s_</pre>_&_;tb;N;ba;:b;s_.*<pre>(.*)</pre>_\1_;p}'
Najprv rozdelime, aby v kazdom riadku bol najviac jeden tag pre. A potom nacitame az po koncovy tag a zobrazime iba obsah ...
7.4.2010 05:11 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
A mozno jednoduchsie:
sed 's_</pre>_&\n_' SUBOR | sed -nr -e '/<pre>/,/<\/pre>/
{
 /.*<pre>/s___
 /<\/pre>/s___
 p
}'
TheTechnic avatar 7.4.2010 10:01 TheTechnic | skóre: 7
Rozbalit Rozbalit vše Re: sed parse html tag
Wow skvele velmi si mi pomohol :) a diky za rady vsetkym ;) Sed powaaa! :D

Este mi ostali v subore znaky ^M na konci riadkov, pre zmazanie bolo potrebne napr. vo vime pozuit prikaz :%s/\r$// a nasledne na subor pouzit prikaz, ktory maze prazdne riadky a to je pomocou sed '/^$/d'. A tada vsetko co bolo treba je na svete :)

Este raz dakujem za rady.
7.4.2010 11:16 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
takze vsetko spojene dokopy:
sed 's_</pre>_&\n_;/^$/d;s/\r$//' SUBOR | sed -nr '\_<pre>_,\_</pre>_{s_.*<pre>|</pre>__g;p}'
7.4.2010 05:13 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
A mozno jednoduchsie - opravene riadkovanie:
sed 's_</pre>_&\n_' SUBOR | sed -nr -e '/<pre>/,/<\/pre>/{
 /.*<pre>/s___
 /<\/pre>/s___
 p
}'
7.4.2010 14:11 l4m4
Rozbalit Rozbalit vše Re: sed parse html tag
Nejjednodušší je toto:
sed -n '/<pre>/,/<\/pre>/{s:.*<pre>::;s:</pre>.*::;p}'
ale předpokládá se zde, že tag pre skutečně obsahuje nějaké bloky textu, takže se jich nevyskytuje více na jednom řádku.
7.4.2010 14:45 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
toje presne moje riesenie, bez prvej casti a teda nefunguje ak ich viac na jednom iadku (co som tam pisal) - je to aj v tom doplneni vyssie skratene cez bodkociarky.
7.4.2010 14:49 deadmail
Rozbalit Rozbalit vše Re: sed parse html tag
a este tam je skratene nahradzovanie - jedno namiesto dvoch

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.