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í
×

dnes 12:55 | Nová verze

Byla vydána verze 17.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace, které nebyly dosud portovány na KDE Frameworks 5, byly z KDE Aplikací odstraněny.

Ladislav Hagara | Komentářů: 17
dnes 03:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Company of Heroes 2 (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
dnes 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 6
dnes 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
včera 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 6
včera 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
včera 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

Ladislav Hagara | Komentářů: 0
včera 18:11 | Nová verze

Byla vydána verze 2.11.0 QEMU (Wikipedie). Přispělo 165 vývojářů. Provedeno bylo více než 2 000 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
včera 17:44 | Komunita

Canonical oznámil dostupnost kryptografických balíčků s certifikací FIPS 140-2 úrovně 1 pro Ubuntu 16.04 LTS pro předplatitele podpory Ubuntu Advantage Advanced. Certifikace FIPS (Federal Information Processing Standards) jsou vyžadovány (nejenom) vládními institucemi USA.

Ladislav Hagara | Komentářů: 3
včera 16:11 | Zajímavý software

Společnost Avast uvolnila zdrojové kódy svého dekompilátoru RetDec (Retargetable Decompiler) založeného na LLVM. Vyzkoušet lze RetDec jako webovou službu nebo plugin pro interaktivní disassembler IDA. Zdrojové kódy RetDec jsou k dispozici na GitHubu pod open source licencí MIT.

Ladislav Hagara | Komentářů: 3
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (76%)
 (14%)
Celkem 997 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    Unixové nástroje – 21 (awk)

    10. 2. 2011 | David Watzke | Návody | 13045×

    V dalším díle Unixových nástrojů se podíváme na jeden z důležitých konzolových nástrojů pro práci s textem: AWK.

    AWK je programovací jazyk a zároveň tradiční *nixový nástroj (awk) sloužící ke zpracování textových proudů. Název vznikl složením prvních písmen příjmení třech hlavních autorů AWKu: Alfred V. Aho, Peter J. Weinberger a Brian W. Kernighan.

    # jak na "Hello, world!" a komentář v AWKu...
    BEGIN { print "Hello, world!" }
    

    AWK je poněkud více těžkotonážní než grep, sed, cut a podobné nástroje. Používáte-li tedy ke zpracování textu kombinaci těchto nástrojů a ještě awk navrch, tak vězte, že v rámci optimalizace by takový příkaz bylo velmi pravděpodobně možné přepsat pouze do AWKu. Následující dva příkazy docílí stejného výsledku:

    $ dmesg | grep CPU0 | cut -d' ' -f2
    AMD
    
    $ dmesg | awk '/CPU0/ { print $2 }'
    AMD
    

    Toto bylo jedno z nejtriviálnějších použití AWKu. Trochu jej rozebereme. Předpis /regexp/ { příkazy } provede příkazy na ty řádky textu, které odpovídají danému regulárnímu výrazu. A co dělá print $2? Vypíše druhý sloupec právě zpracovávaného řádku. Oddělovačem sloupců (či polí) je ve výchozím nastavení mezera a tabulátor, ale pomocí proměnné FS (field separator) toto můžete změnit. Další zvláštní proměnnou je RS (record separator), pomocí které lze nastavit oddělovač jednotlivých řádků (či záznamů). Výchozí hodnotou je '\n', tedy znak nového řádku. Další užitečné proměnné jsou NR (number of records) a NF (number of fields), přičemž první drží pořadové číslo právě zpracovávaného řádku a druhá počet sloupců tohoto řádku.

    Další důležitou součástí jazyka jsou speciální bloky BEGIN { ... } a END { ... }. První se vykoná jednou, hned po spuštění, ještě než se začne zpracovávat text a druhý pro změnu až na konci, když je text zpracován. Pro ilustraci uvedu příklad využívající těchto možností:

    $ find . -name *.ebuild
    ./media-video/subtitlecomposer/subtitlecomposer-0.5.3_p20100510.ebuild
    ./app-misc/lc/lc-1.0.3-r1.ebuild
    ./app-i18n/man-pages-cs/man-pages-cs-0.18.20090209.ebuild
    ./app-office/eqonomize/eqonomize-0.6.ebuild
    
    $ find . -name '*.ebuild' -print0 | awk 'BEGIN { RS="\0"; FS="/" } { print NR ": " $4 }'
    1: subtitlecomposer-0.5.3_p20100510.ebuild
    2: lc-1.0.3-r1.ebuild
    3: man-pages-cs-0.18.20090209.ebuild
    4: eqonomize-0.6.ebuild
    

    V této ukázce jsem si programem find nechal vypsat názvy souborů s příponou ".ebuild" v aktuálním adresáři. Názvy jednotlivých souborů jsou díky (nestandardnímu) přepínači -print0 oddělené znakem "\0" místo "\n", což se může hodit tehdy, když očekáváme exoticky pojmenované soubory, které mají třeba znak "\n" v názvu. V AWKu v sekci BEGIN nastavíme proměnnou RS tak, aby se počítalo se zvláštním oddělováním řádků. Nastavíme také proměnnou FS na lomítko, takže jednotlivé prvky cest k souborům budou obsaženy ve speciálních proměnných $1, $2, atd. Poté v hlavním bloku budeme vypisovat čísla řádků a za ně dvojtečku a čtvrtý sloupec, což můžou být názvy samotných ebuildů. Jak vidíte, řetězce lze spojovat bez speciálních operátorů, dokonce i mnou uvedené mezery jsou tam jen pro přehlednost.

    AWK má dostupné různé matematické funkce, jako třeba cos(), sin(), exp(), log(), sqrt(). Fungují i standardní operátory +, -, * a /. Kromě toho má AWK ještě několik předdefinovaných funkcí pro práci s řetězci, z nichž některé si také předvedeme. A pokud vám v AWKu nějaká funkce chybí, můžete si ji sami definovat. Uživatelsky definované funkce, stejně jako ty vestavěné, mohou vracet hodnoty (pomocí příkazu return).

    Mezi základní funkce pro práci s řetězci patří length() pro zjištění délky řetězce, sub() pro nahrazení textu v řetězci, split() pro rozdělení řetězce dle daného oddělovače do daného pole, sprintf() pro formátování výstupu a tolower() a toupper() pro změnu velikosti písmen na všechna malá či velká.

    Toto je asi vhodná chvíle pro představení přepínače -f, kterému lze jako argument předat cesta k souboru s programem v AWKu. U delších programů z pochopitelných důvodů přestává být praktické psát je celé do příkazového řádku. Následuje o trochu složitější příklad:

    BEGIN { x = 0 }
    
    {
    	if ( NF == 2 ) {
    		print toupper($2) ", " toupper(substr($1, 1, 1)) tolower(substr($1, 2))
    	} else {
    		x++
    	}
    }
    
    END {
    	if ( x > 0 ) print sprintf("Nektere zaznamy (%d) byly preskoceny...", x)
    }
    

    Tento program zkontroluje, zda řádky obsahují dvě slova a pokud ano, vypíše je ve formátu "SLOVO2, Slovo1". Pokud soubor obsahuje jeden či více řádků, které nemají dvě slova, tak program na konci vypíše hlášení s počtem takovýchto řádků. Máme-li vstupní soubor jmena.txt s následujícím obsahem:

    david watzke
    LUBOŠ Doležel
    a někdo další
    

    a zároveň máme výše uvedený program uložený v textovém souboru s názvem program.awk, tak docílíme následujícího:

    $ awk -f program.awk < jmena.txt
    WATZKE, David
    DOLEŽEL, Luboš
    Nektere zaznamy (1) byly preskoceny...
    

    Na této ukázce jsem odhalil, že awk umí pracovat s podmínkami if, ale zrovna tak nemá problém s cykly a spoustou dalších věcí. Rozsah podporovaných vychytávek se liší mezi různými implementacemi. Původní AWK byl totiž rozšířen a vznikl tak nawk (zkratka new awk, tj. nový awk) a kromě toho je zde také velmi rozšířený gawk, neboli GNU awk.

    Jelikož cílem článku evidentně není naučit vás AWK kompletně, ale pouze naznačit, k čemu jej lze použít, tak další studium jeho možností nechám na vás. V diskuzi se můžete podělit s ostatními o své zkušenosti.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

    pavlix avatar 10.2.2011 00:12 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    vězte, že v rámci optimalizace by takový příkaz bylo velmi pravděpodobně možné přepsat pouze do AWKu.
    A kdyby to stále ještě dřelo, tak perl to zachrání :).
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    10.2.2011 03:55 ____ | skóre: 15 | blog: _
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    AWK je verzatilní dost. :) Nejlepší je asi GNU AWK varianta.
    10.2.2011 10:27 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)

    přece jen perl byl vytvořen jako náhraa AWKu ...

    USE="-gnome -kde";turris
    David Watzke avatar 10.2.2011 10:31 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Perl je daleko univerzálnější (a větší) než AWK. Pro začátek si představ třeba GUI v AWKu :-) Perl je sice inspirovanej AWKem (v některých směrech), ale není to jen nástroj pro zpracování textu. Jasně, i s AWKem lze provádět ledacos, ale nedá se to srovnávat.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    10.2.2011 22:31 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Ano. Kdysi jsem se snažil používat pro zpracování textu awk, ale pak jsem dal přednost perlu (znalosti perlu se hodí i jinde; syntaxe obou jazyků je zvláštní, ale perl mi prostě vyhovuje víc). Díky za článek.
    pavlix avatar 13.2.2011 11:06 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Ano. Kdysi jsem se snažil používat pro zpracování textu awk, ale pak jsem dal přednost perlu (znalosti perlu se hodí i jinde; syntaxe obou jazyků je zvláštní, ale perl mi prostě vyhovuje víc). Díky za článek.
    Právě přecházím :).
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    pavlix avatar 13.2.2011 11:05 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    To máš samozřejmě pravdu. Nicméně s perlem ztrácím jakýkoli důvod používat awk a zvlášťě pak na sebe roubovat awk a sed.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    13.2.2011 12:24 Anče
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    jedine co me prekvapuje na uvedenem prikladu je cas provedeni...

    preci jen clovek by cekal ze skladani/volani binarek za sebe a predavani vysledku pres pipe neni nic moc efektivni...
    $ time dmesg | awk '/CPU0/ { print $4 }'
    real	0m0.016s
    user	0m0.016s
    sys	0m0.008s
    
    $ time dmesg | grep CPU0 | cut -d' ' -f7
    real	0m0.011s
    user	0m0.012s
    sys	0m0.004s
    
    ke zminenemu perleni: to zni zajimave... porovnani napriklad python, perl awk a sed/cut/grep/atd. pro zpracovani textu... by mozna opravdu zaujalo vice lidi, co myslis Davide :-)
    13.2.2011 18:11 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Já nevím, mně připadá celkem zbytečné se učit Perl, když máme jiné jazyky, např. Python, které jsou jednodušší, přehlednější a tak celkově prostě lepší.
    pavlix avatar 13.2.2011 23:52 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Já nevím, mně připadá celkem zbytečné se učit X, když máme jiné jazyky, např. Y, které jsou jednodušší, přehlednější a tak celkově prostě lepší.
    Je mi líto, ale za X a Y jde dosadit naprosto cokoli, kde X i Y na daný úkol stačí.

    Dokonce ani ta přehlednost v mnoha případech neplatí, dobře napsaná sada pravidel v Perlu může být daleko přehlednější.

    Divné, že to říkám já, který v Pythonu plynně píšu, ale v Perlu jsem úplný začátečník a hlavní pomůckou při psaní kódu je Google.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    15.2.2011 13:29 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Na RV je Perl asi lepší, to je fakt. Ale jinak bych ho nepoužíval, je to jazyk co je pomalý jako Python a je nepřehledný. Nemám rád, jak Perl nabádá k prasení. Ale tak ať si každý používá co uzná za vhodné, já Perl obecně za moc vhodný nepovažuju :-)
    15.2.2011 15:52 Neřeknu
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Čistě z administrátorského hlediska perl má tu výhodu, že je stable/portable. Když něco napíšu v shellu nebo pythonu, tak si můžu být jist, že mi to na 2/3 strojů nepojede, zatímco s perlem tyhle problemy nemám. Ne všude je nejnovější distro. Jsou tu taky enterprise distribuce a jiné unixy. Udržovat stejnou verzi všude není něco co bych měl náladu dělat. Co bych z toho taky měl, že?

    Krom toho jazyk, kde jsou bílé znaky významné, taky není moc kůl. Tuhle jsem komusi dělal skript v pythonu, on si tam upravil jeden string a přitom přidal před to nějakou mezeru a potom se děsně divil, že mu to nefunguje. To by se asi nikde jinde (whitespace je asi čestná výjimka :-)) nestalo.
    15.2.2011 15:55 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    To by se asi nikde jinde (whitespace je asi čestná výjimka :-)) nestalo.

    Makefile :-(

    15.2.2011 18:40 Neřeknu
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Jak jsem jen mohl zapomenout... :-D Ale teď jsem to zkusil a VIM mně to zvýrazňuje jako chybu, tak chytrý to pythonu asi nebude, alespoň na to míchání tabu a mezer je `python -tt ...', jenže to neřeší všechno.
    16.2.2011 17:48 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Mezi Pythonem 2 a 3 (3 je zpětně nekompatibilní) je možné si vybrat, co používat. Jinak je to myslím v pohodě.

    To byla ale chyba, že někdo kašle na odsazení v jazyce, kde je důležité. Mně se tahle vlastnost Pythonu líbí, udržuje se tak pořádek a není potřeba psát navíc složené závorky. Kód je tak kratší a vypadá přehledněji. Jenom je škoda, že do toho vnáší zmatek používání mezer/tabulotorů. Z pohledu sémantiky jsou jasné tabulátory, ale zase jsme zvyklí se dívat na kód někde jako na 2D obrázek a na to prostě potřebujeme pevné jednotky (mezera = 1 znak) a ne gumové tabulátory.
    16.2.2011 18:31 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Těch problémů je víc - namátkou mne napadá třeba copy&paste nebo přenos e-mailem. U Makefile jsem ochoten to brát jako historický omyl, ale u Pythonu už to jednoznačně vnímám jako hrubou chybu návrhu.
    16.2.2011 19:10 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nebo je to hrubá nedokonalost nástrojů používaných k manipulaci s tím kódem. Výsledkem je špatné odsazení a problém je v tom, že Python špatné odsazení nesnese, chápu to správně? Všechny editory, co za něco stojí, si s odsazováním poradí. Proč nutit programátory zabordelovat si kód závorkama a tolerovat špatné odsazení jenom proto, že úplně primitivní editory jako např. notepad nebo tahle textarea odsazování nepodporuje? Podle stejné logiky bysme neměli vyžadovat odsazování v kódu, aby se dobře upravoval někomu, kdo používá primitivní editor.
    16.2.2011 19:11 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nebo ještě líp, odsazování zakázat. Na toho chudáka s notepadem a druhého s textareou přece musíme brát ohled ;-)
    pavlix avatar 16.2.2011 19:59 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Na toho chudáka s notepadem a druhého s textareou přece musíme brát ohle
    Jaký je mezi nimi rozdíl?
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    16.2.2011 21:22 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Žádný. Oba jsou to na psaní kódu primitivní nástroje, ani jeden se nestará o odsazování.
    16.2.2011 20:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Podsouváte mi něco, co jsem vůbec netvrdil. To, že by formátování bílého místa nemělo být syntakticky významné, přeci vůbec neznamená, že by se nemělo odsazovat. Přesně naopak: díky tomu, že v rozumně navržených jazycích syntakticky významné není, může si každý odsazovat tak, jak mu vyhovuje a jak se mu to líbí. Někdo dvěma mezerami, někdo čtyřmi, někdo tabulátorem. Žádná z těch variant není špatné odsazení a když dostanu jinak odsazený dokument, ať už proto, že autor použil jiný coding style, nebo proto, že to prošlo cestou, která formátování whitespace pozměnila, proženu to indentem nebo jiným automatickým nástrojem a mám to, jak jsem to chtěl. To jen fundamentalisté vykřikují, že existuje jeden Jediný Správný Způsob a všechno ostatní je špatně.
    16.2.2011 21:21 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Já vám to nepodsouvám, já jen konstatuju, kam můžeme dojít, když budeme vyžadovat, aby se programy daly pohodlně upravovat úplně hloupým editorem, a budeme tím omezovat syntaxi jazyka. Myšlenka: když upravuju (kopíruju bloky atd.) pěkně odsazovaný program v hloupém editoru, odsazení tím rozbiju a i když to jazyk nevyžaduje, měl bych to opravit (resp. musím, pokud chci zachovat v programu odsazování a tím dobrou čitelnost); znamená to tedy, že radši nemáme odsazovat, aby i úpravy v hloupém editoru vyhovovaly našim stylistickým konvencím? Problém s Pythonem je to samé, akorát výsledek nejen že odporuje stylistickým konvencím (nevypadá to hezky), ale navíc ani nefunguje správně. Podle mě to není takový problém, program bych stejně měl po úpravě hloupým editorem spravit, aby vypadal hezky. Python mě akorát donutí to udělat hned.
    Někdo dvěma mezerami, někdo čtyřmi, někdo tabulátorem.
    Python umožňuje odsazovat v podstatě jakýmkoliv počtem bílých znaků, jenom je potřeba, aby bylo v celém souboru jednotné. Jinak to může dělat divné věci.
    To jen fundamentalisté vykřikují, že existuje jeden Jediný Správný Způsob a všechno ostatní je špatně.
    Pokud je určitý způsob odsazování součástí syntaxe jazyka, tak je správný ten a jiný ne. V C++ si taky nemůžu říct, že se mi nelíbí složené závorky a místo nich chci psát třeba špičaté, protože se mi víc líbí.
    16.2.2011 22:27 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Problém s Pythonem je to samé, akorát výsledek nejen že odporuje stylistickým konvencím (nevypadá to hezky), ale navíc ani nefunguje správně.

    Pro vás je to možná "to samé, akorát…", pro mne je to naprosto zásadní rozdíl.

    Pokud je určitý způsob odsazování součástí syntaxe jazyka, tak je správný ten a jiný ne.

    Jistě. A já tvrdím, že formátování whitespace by nemělo být syntakticky významné.

    13.2.2011 19:20 Sten
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Na one-linery je awk nenahraditelný:
    kill $(ps -Af | awk '$8 ~ /nspluginwrapper/ { print $2 }')
    Na složitější ale také raději perlím.
    Jendа avatar 13.2.2011 19:48 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nestačilo by killall nspluginwrapper?
    Why did the multithreaded chicken cross the road? to To other side. get the
    14.2.2011 17:00 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nejlépe použít na Solarisu :)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    15.2.2011 18:51 Neřeknu
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nebo na AIXu, jako root na produkčním serveru se SAPem a tisíci uživateli ve všední den... Když není nspluginwrapper, dá se to použít i na něco jiného... :-D
    pavlix avatar 13.2.2011 23:54 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Nenahraditelný určitě není, ale pravdou je, že tohle v awku vypadá elegantněji.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    12.2.2011 19:32 Otto
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Gawk je skvělé,používám ho již 20let denně. Píšu většinou krátké skripty ,do 100 řádků. Nejčastěji používám funkci split,gsub a hlavně hashe.
    pavlix avatar 13.2.2011 11:04 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    AWK je verzatilní dost. :)
    To jsem poznal, jak je verzatilní. Proto po zkušenostech přepisuju generátor webu do perlu.
    Nejlepší je asi GNU AWK varianta.
    Bez některých GNU rozšíření se s tím nedá pořádně pracovat.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    10.2.2011 08:35 pepazdepa
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    kdyby nekdo zapasil s tim, jak pouzit jednoduchou uvozovku uvnitr awku (nebo sedu) tak ji staci napsat takto:
    '\''
    11.2.2011 15:54 zZ
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    jak pouzit jednoduchou uvozovku uvnitr awku
    jak vložit jednoduchou uvozovku do textu uvozeného jednoduchými uvozovkami
    tak ji staci napsat takto
    tak to nejde a je potřeba text rozdělit a vložit ji mezi jeho části
    'aaaa'\''bbbb' # "aaaa'bbbb"
    11.2.2011 22:32 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Takže jste nakonec jen jinými slovy popsal přesně to, co kolega před vámi. :-)
    12.2.2011 00:29 zZ
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    A pořád to má k přesnému popisu daleko :) Ale ne tak daleko, jako Pepíkův pokus, který je bez dalšího prostě nesmysl.
    14.2.2011 00:03 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)

    Ted uz zbyva jen vysvetlit nam neznalym, co to jsou ty jednoduche uvozovky (a dvojite uvozovky). Ja znam "jen" uvozovky a apostrofy.

    Dejv
    Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
    14.2.2011 00:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)

    Ten rozdíl je spíš sémantický. Unicode má sice tři různé znaky (U+0027 apostrophe, U+2018 left single quotation mark, U+2019 right single quotation mark), ale běžně se ale používá jen jeden (ten původní z ASCII). U programovacích jazyků včetně Bourne shellu je to o to zamotanější, že sémanticky jde sice o jednoduché uvozovky, ale pro otevírací i uzavírací se používá stejný znak, a to U+0027. A aby byl zmatek dokonalý, v seznamu unicode znaků se pro apostrof doporučuje používat U+2019 (right single quotation mark). :-)

    U dvojitých uvozovek je to pak ještě komplikováno tím, že různé jazyky používají různé verze uvozovek (jako šestka/devítka, normálně/převráceně, dole/nahoře) a jejich kombinace - viz znaky U+201A až U+201F.

    10.2.2011 19:35 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)

    Zdravim,

    v prvom rade velmi pekne dakujem za tento clanok, ako aj za vsetky predchadzajuce. Kazdy mi nieco dal, co je skvele.

    Si pamatam, ked som spatril prirucku awk-u po prvykrat, tak som to nechal na dalsi vikend, ked budem mat viac casu. Uz ubehlo tych vikendov doteraz. Kazdopadne, tento clanok ma nakopol a som rad. Takze zacinam radsi uz dneska a cez vikend uz daco hadam vypotim zo seba.

    pepe_ avatar 10.2.2011 19:44 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Ten příklad u mne :
    
    pepe@PC-Pepe:~$ dmesg | grep CPU0 | cut -d' ' -f2
    
    
    
    
    
    
    
    7581.955546]
    7581.980078]
    9400.047266]
    9400.074458]
    9566.345718]
    9566.373324]
    CPU0
    CPU0
    pepe@PC-Pepe:~$ dmesg | awk '/CPU0/ { print $2 }'
    0.000145]
    0.077124]
    0.508710]
    46.174659]
    46.199292]
    57.310763]
    57.348874]
    7581.955546]
    7581.980078]
    9400.047266]
    9400.074458]
    9566.345718]
    9566.373324]
    CPU0
    CPU0
    pepe@PC-Pepe:~$ 
    
    
    hi :)
    10.2.2011 23:43 secret
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    ten priklad asi neni uplne idalni, ale to neni ten problem

    AWK sam grupuje oddelovace (kdyz je nekolik mezer za sebou tak je to jeden oddelovac), kdezto cut ne (vic mezer za sebou je proste nekolik prazdnych sloupcu)

    pro priklad pouziti treba ls -l
    11.2.2011 13:03 deadmail
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Staci upravit ...
    dmesg | grep CPU0 | tr -s ' ' | cut -d' ' -f2
    
    A to iste vieme cez jeden awk ;-)
    Jesus Jimenez avatar 11.2.2011 15:52 Jesus Jimenez | skóre: 28
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Název vznikl složením prvních písmen příjmení třech hlavních autorů AWKu: Alfred V. Aho, Peter J. Weinberger a Brian W. Kernighan.
    Vida, ja mel dojem, ze je to jen zkratka pro AWKward... :)
    Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy
    12.2.2011 22:20 PeterS. | skóre: 10
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Veľmi užitočný článoček vďaka,

    skušal som si niečo z toho precvičiť, išlo to celkom dobre, urobil som toto:
    awk '{ if ( NF <= 20 ) {print NR  } }' test.txt
    ale chcel by som aby výstup vyzeral takto:

    NR : obsah riadku

    Takže ako mu mám povedať že za 'NE " : "' ma vypísať celý riadok? Vopred vďaka za usmernenie
    David Watzke avatar 12.2.2011 23:10 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    Proměnná $0 obsahuje aktuální záznam. Třeba:
    print sprintf("%d: %s", NF, $0)
    #nebo
    print NR ": " $0
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    13.2.2011 00:14 PeterS. | skóre: 10
    Rozbalit Rozbalit vše Re: Unixové nástroje – 21 (awk)
    jasne, vďaka...
    16.2.2011 16:46 inko
    Rozbalit Rozbalit vše Vselico ide v awk
    http://www.thegeekstuff.com/scripts/solve.awk

    Založit nové vláknoNahoru

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