Portál AbcLinuxu, 30. dubna 2025 10:09

sed & awk

19.2.2006 19:33 | Přečteno: 1744× | Linux | poslední úprava: 19.2.2006 19:35

Linux je můj koníček. Linux je velká část mého volného času. Linux je i velká část příjmů mého studentského života. Umožnil mi lehčí nadstandard po finanční stránce. Za to vděčím nejen kamarádovi, který mi linux kdysi ukázal, ale hlavně své motivaci se neustále něco učit. Přesto existují oblasti, ve kterých se téměř vůbec neorientuju. Aktuálně jsou to programy sed & awk a regulární výrazy.

Z výstupu MRTG jsem chtěl vyparsovat časové údaje mezi tagy strong na řádce

Poslední aktualizace statistiky: _
   <strong>Neděle 19. Únor 2006 , 18:51 hod </strong>
, abych to mohl dále zpracovávat pomocí PHP. Narazil jsem na spoustu problémů. Buď jsem se nezbavil tagů strong, nebo jsem se zbavil všeho nebo všelijaké paskvily. Trápil jsem se s takovou hloupostí několik hodin. Ale určitě to nebylo zbytečné. Pochopil jsem, jak funguje awk.

Jak to dopadlo? Dávám to sem, třeba se to někomu bude hodit.

Soubor aktualizace.awk:

{
   sStart  = index($0, "<strong>") + 8;
   sEnd    = index($0, "</strong>");
   sLength = sEnd - sStart + 8;

   print(substr($0, sStart, sLength));
}

Soubor aktualizace.php:

<?php
   echo "Poslední aktualizace statistiky: <b>", _
      `cat mrtg.html | grep aktualizace | awk -f aktualizace.awk`, _
      "</b>";
php?>

Příští zastávka: sed

       

Hodnocení: 89 %

        špatnédobré        

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

Komentáře

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

Vložit další komentář

David Watzke avatar 19.2.2006 20:09 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: sed & awk
Odpovědět | Sbalit | Link | Blokovat | Admin
Hehe
cat mrtg.html | grep aktualizace | awk -f aktualizace.awk
lepší je
grep aktualizace mrtg.html | awk -f aktualizace.awk
;-) Viz Kde se vzalo 'cat soubor | příkaz'?.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
19.2.2006 23:27 Ondřej Čečák | skóre: 33
Rozbalit Rozbalit vše Re: sed & awk
cat soubor | prikaz je super v tom, ze staci dva stisky klaves, a razem parsujete misto textu treba komprimovany text.
-- "Ja vim, on vi, ty pico!"
20.2.2006 11:09 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: sed & awk
Zrovna u grepu to taky není taky problém, stačí použít shellové wrappery zgrep, nebo bzgrep. To se netýká awk, nebo sedu. Je pravda, že psát wrapper na každou z textutils by bylo docela drsné :-D.
When your hammer is C++, everything begins to look like a thumb.
20.2.2006 13:35 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed & awk
Nemluvě o tom, že by to bylo tak trochu proti celé koncepci rour a filtrů… :-)
20.2.2006 08:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed & awk
A to vám připadá vtipné? Proč se určitá skupina lidí pořád tolik vyžívá v brojení proti používání příkazu cat?
David Watzke avatar 20.2.2006 21:41 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: sed & awk
Ne, vtipný mi to nepřipadá. V shellu to není tak divný napsat, když je jeden línej, ale do skriptu? Zbytečný, delší atd.. Proti cat nic nemám :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
m$ lipo $m avatar 19.2.2006 20:21 m$ lipo $m | skóre: 19 | blog: čaj o páté | Redmond
Rozbalit Rozbalit vše Re: sed & awk
Odpovědět | Sbalit | Link | Blokovat | Admin
mohlo by to jit treba takto:

grep strong mrtg.html | sed -e "s/\(<strong>\)\(.*\)\(\</strong\>)/\2/"
Albuquerque, New Mexico (April 4, 1975)
19.2.2006 20:40 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: sed & awk
Nastuduju, dík.
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
.. avatar 19.2.2006 21:15 .. | skóre: 4 | blog:
Rozbalit Rozbalit vše Re: sed & awk

Myslim ze trochu jednodussi, citelnejsi a funkcnejsi zapis toho sedu by byl

sed -e 's%^.*<strong>\(.*\)</strong>.*$%\1%'

Ubylo tak zbytecneho escapovani. Je to i funkcnejsi, protoze vase ukazka pouze defakto "umaze" tagy <strong> a jeho zaviraci obdobu.

Josef Kufner avatar 19.2.2006 21:53 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: sed & awk
Odpovědět | Sbalit | Link | Blokovat | Admin
sed -n '{/<STRONG>.*<\/STRONG>/s/^.*<STRONG>\(.*\)<\/STRONG>.*$/\1/};T;p' mrtg.html
Hello world ! Segmentation fault (core dumped)
20.2.2006 07:47 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: sed & awk
Odpovědět | Sbalit | Link | Blokovat | Admin
Nemáte v archivu odkaz na nějaký dobrý článek nebo tutoriál o sed/awk/regulárních výrazech? Chtěl bych vidět hlavně řešené příklady.
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
20.2.2006 12:07 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: sed & awk
Pokud by nevadilo zakoupení knihy o awk a sedu tak tady je recenze
V pekle jsou samé diskety a ďábel je velká disketová mechanika
20.2.2006 16:05 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: sed & awk
možná si půjčím v knihovně. dík za tip
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
20.2.2006 15:38 al-Quaknaa | skóre: 13 | blog: al_quaknaa
Rozbalit Rozbalit vše Re: sed & awk
Ačkoliv tady root.cz není zvlášť oblíbený, zde by, domnívám se, pomohl:
Seriál o sedu
Regulární výrazy
Snad se bude hodit.
al-Quaknaa
20.2.2006 16:04 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: sed & awk
zajímavé, dík
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
20.2.2006 14:27 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: sed & awk
Odpovědět | Sbalit | Link | Blokovat | Admin
Tiez som kedysi parsoval HTML sedom, ale obecne je to trocha zlozitejsie. Vsetky tu uvedene riesenia nepocitaju s tym, ze tagy mozu byt na roznych riadkoch. Takze najprv treba cez sedovy prikaz 'N' spojit riadky dohromady a az potom z toho vytahovat data.

V opacnom pripade sa moze stat, ze z validneho HTML nevytiahnete pozadovane data.
If you hold a Unix shell up to your ear, you can you hear the C.
21.2.2006 07:52 Coques
Rozbalit Rozbalit vše Re: sed & awk

Založit nové vláknoNahoru

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