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 04:22 | Nová verze

    Byla vydána nová verze 10.2 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze nové balíčky Immich, Immich Machine Learning, uv a RustDesk Client.

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

    TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 6.0. Příští verze 7.0 je kvůli výkonu přepisována do programovacího jazyka Go.

    Ladislav Hagara | Komentářů: 0
    včera 20:33 | Zajímavý článek

    Christian Schaller z Red Hatu na svém blogu popsal své zkušenosti s používáním AI při vývoji open source aplikací pro Linux. Pomocí různých AI aktualizoval nebo vytvořil aplikace Elgato Light GNOME Shell extension, Dell Ultrasharp Webcam 4K, Red Hat Planet, WMDock, XMMS resuscitated (aktualizace z GTK 2 a Esound na GTK 4, GStreamer a PipeWire) a Monkey Bubble. SANE ovladač pro skener Plustek OpticFilm 8200i se mu zatím nepovedl.

    Ladislav Hagara | Komentářů: 4
    včera 19:44 | IT novinky

    Americké firmy Tesla a SpaceX postaví v texaském Austinu moderní komplex na výrobu čipů pro umělou inteligenci (AI). Součástí projektu s názvem Terafab budou dvě moderní továrny na výrobu čipů – jedna se zaměří na automobily a humanoidní roboty, druhá na datová centra ve vesmíru. Uvedl to generální ředitel těchto firem Elon Musk. Projekt by podle odhadů měl stát 20 miliard USD (zhruba 425 miliard Kč).

    Ladislav Hagara | Komentářů: 2
    včera 15:00 | Nová verze

    Byla vydána nová stabilní verze 6.11 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 01:44 | Bezpečnostní upozornění

    Ubuntu 26.04 patrně bude ve výchozím nastavení zobrazovat hvězdičky při zadávání hesla příkazu sudo, změna vychází z nové verze sudo-rs. Ta sice zlepší použitelnost systému pro nové uživatele, na které mohlo 'tiché sudo' působit dojmem, že systém 'zamrzl' a nijak nereaguje na stisky kláves, na druhou stranu se jedná o možnou bezpečnostní slabinu, neboť zobrazování hvězdiček v terminálu odhaluje délku hesla. Původní chování příkazu sudo

    … více »
    NUKE GAZA! 🎆 | Komentářů: 11
    22.3. 21:33 | Komunita

    Projekt systemd schválil kontroverzní pull request, který do JSON záznamů uživatelů přidává nové pole 'birthDate', datum narození, tedy údaj vyžadovaný zákony o ověřování věku v Kalifornii, Coloradu a Brazílii. Jiný pull request, který tuto změnu napravoval, byl správcem projektu Lennartem Poetteringem zamítnut s následujícím zdůvodněním:

    … více »
    NUKE GAZA! 🎆 | Komentářů: 27
    22.3. 17:22 | Nová verze

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 163 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.3. 15:22 | IT novinky

    Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního

    … více »
    NUKE GAZA! 🎆 | Komentářů: 6
    21.3. 15:11 | Zajímavý projekt

    Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.

    Ladislav Hagara | Komentářů: 14
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1139 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Awk

    13.8.2005 16:29 | Přečteno: 4082× | Linux

    Tento je zápis pro především mě, až mě zase popadne nutkání programovat awk v shellu.

    Awk je mocný program pro zpracování textu. Jeho název pochází z počátečních jmen autorů Alfred V. Aho, Peter J. Weinberger a Brian W. Kernighan. Použití je následující (viz man awk):

    gawk [ argumenty ] -f soubor-s-programem [ -- ] soubor(y)
    gawk [ argumenty ] [ -- ] text-programu soubor(y) ...
    

    Struktura awk programu

    BEGIN          {inicializace}
                   {program}
    vzorek
    vzorek2        {program1}
    /reg. výr./    {program2}
    /start/,/stop/ {program3 1}
    END            {dokončení}
    

    Jak awk pracuje?

    Z předchozí části plyne, že awk je řádkově orientovaný. Není to úplná pravda. Vstup, který awk čte, je dělen do záznamů a implicitním oddělovačem záznamu je znak nového řádku. Záznam (řádek) se dále dělí na jednotlivé položky (fields). Implicitně tvoří oddělovač záznamů znaky mezera, tabulátor a nový řádek.

    K jednotlivým položkám se dostaneme pomocí proměnných $1, $2, ... . V proměnné $0 je uložen celý záznam.

    Některé vnitřní proměnné awk

    proměnná význam
    CONVFMT formát pro konverzi čísel (viz část proměnné)
    FILENAME jméno právě zpracovávaného souboru (- značí stdin)
    FS oddělovač položek v záznamu
    IGNORECASE nastavena na nenulovou hodnotu určuje, že se bude ignorovat velikost znaků (GNU awk rozšíření)
    NF počet položek aktuálního záznamu
    NR počet záznamů (většinou odpovídá číslu řádku)
    RS oddělovač záznamů

    Proměnné v awk

    Co by to bylo za programovací jazyk, kdyby neměl proměnné. Awk umí pouze dva druhy proměnných, čísla a řetězce a typ se rozlišuje podle kontextu. Konverze mezi typy zajišťují C funkce atof (řetězec na číslo) a sprintf (číslo na řetězec, podle obsahu proměnné CONVFMT). Numerická hodnota se přiřadí příkazem foo = 1, řetězec bar = "123". Awk nemá explicitní funkce pro přetypování, takže číslo na řetězec převedeme přiřazením prázdného řetězce - foo "". Řetezec na číslo převedeme přičtením nuly - bar + 0.

    Narozdíl od vnitřních proměnných awk, které jsou vyplňovány automaticky, ty ostatní mají implicitně hodnotu nula. Dokud jim není přiřazena hodnota jiná.

    Výstup

    Awk obsahuje příkaz print, který vytiskne svůj argument na výstup. Například náhrada příkazu cat soubor v awk vypadá takto: awk '{print}' soubor. Program cat -n soubor by vypadal awk '{print NR" "$0}' soubor. Dále můžeme, podobně jako v shellu, přesměrovat výstup napsáním print > soubor, případně print >> soubor. Nebo dokonce předat jinému programu pomocí roury print | "wall" .

    Stejně jako v C můžeme používat formátovaný výstup pomocí příkazu printf. Formátovací znaky jsou shodné s C verzí, takže vás odkáži na man 3 printf, nebo jiný zdroj dokumentace o C.

    Ostatní

    Awk toho umí daleko více, má příkazy pro kontrolu toku programu (podmínky, cykly), podporu pro pole, možnost deklarovat vlastní funkce (rozšíření GNU awk), vnitřní funkce (vstupní a výstupní, aritmetické, pro práci s řetězci, časové). Dále umožňuje GNU awk práci s některými dev soubory ( print "chyba" > /dev/stderr). Více je v dokumentaci man awk a info awk a na internetu - skvělý manuál Michala Brandejse z muni, oficiální příručku FSF a FAQ z comp.lang.awk.


    [1]Tento interval může rovněž označovat řádky v souboru. Program awk 'NR == 10, NR == 30 { print }' vybere řádky 10 až 30.

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    13.8.2005 16:41 Leoš Literák | skóre: 74 | blog: LL | Praha
    Rozbalit Rozbalit vše clanek?
    trochu to rozvest a muze to vyjit i na hlavni strance jako clanek :-)
    Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
    14.8.2005 01:07 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše co ja vim
    Zrovna ctu knihu od Helmuta Herolda Awk & sed: Prirucka datoveho zpracovani textu, na kterou napsal Vlastimil Ott recenzi . Neda se jinak nez souhlasit, ze ta knizka je opravdu poradne hutna. :-)

    Pises, ze BEGIN musi byt na zacatku a END na konci programu. Naopak pan Herold v knize tvrdi, ze tomu tak byt nemusi. Nevim, nezkousel jsem a dokud se nedostanu ke stroji s Linuxem, tak ani nezkusim.

    V tuto chvili me napadaji dve otazky, tykajici se Awku:
    • Ma cenu se ho dnes jeste vubec ucit, kdyz treba podle Raymonda uz je dnes v podstate mrtvy a existuji lepsi alternativy?
    • Jak se Awk vyslovuje? Vzhledem k tomu, ze nazev vznikl z pocatecnich pismen jmen autoru bych rekl, ze by se to melo asi proste vyspelovat. To se mi zda ale takove tezkopadne a vubec se mi to nelibi... Druha moznost co me napada je, ze by se to vyslovilo stejne jako anglicke slovicko "hawk", jen by se vynechalo "h". To si ale zase vzdycky vzpomenu na Knihovnika ze Zemeplochy. ;-)
    14.8.2005 10:11 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: co ja vim
    1. Zhruba od roku 1987 (a podle POSIXu) může být BEGIN a END kdekoli a několikrát.

    2. Perl neumí record separator jako regulární výraz ;-) Awk se podle mne stále má smysl učit, ale ne do hloubky -- zhruba jen na úroveň těch skriptů, které lze v awk formulovat srozumitelněji a přehledněji než třeba v perlu.

    3. ook!
    14.8.2005 11:12 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: co ja vim
    afko ;-)
    14.8.2005 19:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: co ja vim
    Neřekl bych. Samozřejmě, že cokoliv složitějšího je lepší napsat v Pythonu, nebo v Perlu. Ale pokud píšeš nějaký skript v shellu, tak se ti awk častokrát moc hodí. Je kratší napsat
    awk '/regexp/{udelej neco}'
    
    než ručně v shellu procházet každý řádek a grepem ho ověřovat, zda odpovídá onomu regulárnímu výrazu. Mimo to je awk rychlejší.
    When your hammer is C++, everything begins to look like a thumb.
    14.8.2005 23:17 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: co ja vim
    Taky si myslím. Kdybych měl kvůli každé konstrukci typu
      for u in `awk -F: '{ if ($3>=1000 && $3<60000) print $1; }' /etc/passwd`; do
        ...
      done
    
    používat perl nebo na to psát program v céčku, asi bych se z toho zbláznil.
    5.7.2007 14:33 me
    Rozbalit Rozbalit vše Re: co ja vim
    Je pravda, ze co udelate v AWK, udelate v PERLU take. Presto si myslim, ze se smysl AWK naucit, uz jen proto, ze proti PERLU je velmi jednoduchy a rychle se jej clovek nauci. Pochopi jak se pouzivaji regularni vyrazy a jak se zpracovava text a pokud zjisti, ze mu AWK nestaci, muze prejit na PERL. AWK je velmi efektivni jazyk na zpracovani textovych souboru (logy, vystupy, hledani chyb, kontola reportu, analyza textu, atd). V nejake studii vysel AWK jako jeden z nejsnadnejsich programovacich jazyku s velmi rychlymi vysledky. AWK je jednoduchy jazyk, ale umi regularni i vyrazy a asociativni pole a je velmi podobny C. Umim trochu PERL i AWK, pokud nemam duvod (napriklad zpracovani binarnich dat ktere AWK neumi), radsi pisi v AWK.

    Založit nové vláknoNahoru

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