Portál AbcLinuxu, 10. května 2025 09:06

Dotaz: zpracování textu v SEDu

26.11.2009 10:51 Jaromír Šauer
zpracování textu v SEDu
Přečteno: 257×
Odpovědět | Admin
Dobrý den potřeboval bych poradit se zpracováním textu v konzoli pomocí SEDu . Pomocí curl stáhuji html soubor z kterého potřebuji vytáhnout určité informace . Tuším že to půjde pomocí sedu , ale nějak se mi nedaří pochopit jak to funguje .

Konkrétně : stáhnu si html : http://aktualne.centrum.cz/zahranici/evropa/clanek.phtml?id=653920

potřebuji vytáhnout datumu článku , čas , a titulek jako proměné s kterým budu poté dále pracovat .

Děkuji za koukoliv radu .

Šauer J.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.11.2009 13:37 ams
Rozbalit Rozbalit vše Re: zpracování textu v SEDu
Odpovědět | | Sbalit | Link | Blokovat | Admin
SED na to neni dost dobre staveny, ostatne vytahovat data z html pomoci regexpu neni spravne i kdyz se to pomerne casto dela. Presto tady je neco, co by mohlo fungovat:
url='http://aktualne.centrum.cz/zahranici/evropa/clanek.phtml?id=653920'
wget -O clanek.html "$url"
titulek=`grep -o '<h1 class="titulek-clanku">[^<]*' clanek.html | cut -c28-`
cas_datum=`grep -o '<span class="cas">[^<]*' clanek.html | head -n1`
cas=`echo "$cas_datum" | grep -Eo '[0-9]{2}:[0-9]{2}'`
datum=`echo "$cas_datum" | grep -Eo '[0-9]{2}\.[0-9]{2}\.[0-9]{4}'`
echo -e "Titulek: $titulek\nCas: $cas, Datum: $datum"
27.11.2009 11:20 Jaromír Šauer
Rozbalit Rozbalit vše Re: zpracování textu v SEDu
Děkuji , titulek mi ještě trošku zlobil, nicméně jsem to dal dohromady .
27.11.2009 13:10 Ash | skóre: 53
Rozbalit Rozbalit vše Re: zpracování textu v SEDu
Opatrně na data a čas, ne vždy máte jistotu že třeba 1.12. bude zapsáno jako 01.12. V tom sedu by to bylo zbastleno třeba:
url='http://aktualne.centrum.cz/zahranici/evropa/clanek.phtml?id=653920'
wget -q -O - "$url" | iconv -f iso8859-2 -t utf-8 > clanek.html
titulek=$(sed -n -e 's/.*<h1 class="titulek-clanku">\([^<]*\).*/\1/p' clanek.html)
datum=$(sed -n -e 's/.*titulek-clanku.*<span class="cas">[^|]*|[^0-9\.]*\([0-9\.]*\).*/\1/p' clanek.html)
cas=$(sed -n -e 's/.*titulek-clanku.*<span class="cas">\s*\([0-9:]*\).*$/\1/p' clanek.html)
echo -e "Titulek: $titulek\nCas: $cas, Datum: $datum"
Obecně lze kombinaci grep/head/cut omezit na sed.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.