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 15:33 | Humor

    PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    včera 14:33 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 12:33 | Zajímavý projekt

    FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.

    NUKE GAZA! 🎆 | Komentářů: 4
    14.3. 22:55 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.

    Ladislav Hagara | Komentářů: 1
    14.3. 21:33 | Nová verze

    Projekt Debian aktualizoval obrazy stabilní větve „Trixie“ (13.4). Shrnuje opravy za poslední dva měsíce, 111 aktualizovaných balíčků a 67 bezpečnostních hlášení. Opravy se týkají mj. chyb v glibc nebo webovém serveru Apache.

    |🇵🇸 | Komentářů: 2
    14.3. 13:00 | Humor

    Agent umělé inteligence Claude Opus ignoroval uživatelovu odpověď 'ne' na dotaz, zda má implementovat změny kódu, a přesto se pokusil změny provést. Agent si odpověď 'ne' vysvětlil následovně: Uživatel na mou otázku 'Mám to implementovat?' odpověděl 'ne' - ale když se podívám na kontext, myslím, že tím 'ne' odpovídá na to, abych žádal o svolení, tedy myslí 'prostě to udělej, přestaň se ptát'.

    NUKE GAZA! 🎆 | Komentářů: 12
    14.3. 00:44 | IT novinky

    Po 8. květnu 2026 už na Instagramu nebudou podporované zprávy opatřené koncovým šifrováním. V chatech, kterých se bude změna týkat, se objeví pokyny o tom, jak si média nebo zprávy z nich stáhnout, pokud si je chcete ponechat.

    Ladislav Hagara | Komentářů: 7
    14.3. 00:33 | IT novinky

    V lednu byla ve veřejné betě obnovena sociální síť Digg (Wikipedie). Dnes bylo oznámeno její ukončení (Hard Reset). Společnost Digg propouští velkou část týmu a přiznává, že se nepodařilo najít správné místo na trhu. Důvody jsou masivní problém s boty a silná konkurence. Společnost Digg nekončí, malý tým pokračuje v práci na zcela novém přístupu. Cílem je vybudovat platformu, kde lze důvěřovat obsahu i lidem za ním. Od dubna se do Diggu na plný úvazek vrací Kevin Rose, zakladatel Diggu z roku 2004.

    Ladislav Hagara | Komentářů: 5
    13.3. 12:33 | Zajímavý projekt

    MALUS je kontroverzní proprietarní nástroj, který svým zákazníkům umožňuje nechat AI, která dle tvrzení provozovatelů nikdy neviděla původní zdrojový kód, analyzovat dokumentaci, API a veřejná rozhraní jakéhokoliv open-source projektu a následně úplně od píky vygenerovat funkčně ekvivalentní software, ovšem pod libovolnou licencí.

    NUKE GAZA! 🎆 | Komentářů: 17
    13.3. 03:55 | Bezpečnostní upozornění

    Příspěvek na blogu Ubuntu upozorňuje na několik zranitelností v rozšíření Linuxu o mandatorní řízení přístupu AppArmor. Společně jsou označovány jako CrackArmor. Objevila je společnost Qualys (technické detaily). Neprivilegovaný lokální uživatel se může stát rootem. Chyba existuje od roku 2017. Doporučuje se okamžitá aktualizace. Problém se týká Ubuntu, Debianu nebo SUSE. Red Hat nebo Fedora pro mandatorní řízení přístupu používají SELinux.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1088 hlasů
     Komentářů: 26, poslední 12.3. 08:56
    Rozcestník

    BASH - V

    21. 11. 2003 | Jan Fuchs | Návody | 41767×

    V předposlední části seriálu si ukážeme, jak pracovat s dokumenty here, metaznaky shellu, regulárními výrazy, filtry a proudovými editory.

    Obsah jednotlivých dílů

    1. Úvod, editace příkazové řádky
    2. Základní příkazy, roury a přesměrování
    3. Proměnné, podmínky a cykly
    4. Funkce a příkazy
    5. Dokumenty here, regulární výrazy
    6. Ladění skriptů, odchytávání signálů a příklady

    Dokumenty here

    Umožňují předat vstup příkazu ze samotného skriptu. Ukážeme si to na skriptu here.sh.

    #!/bin/bash

    cat <<EOF
    \$USER=$USER
    \$HOME=$HOME
    \$SHELL=$SHELL
    EOF

    cat <<"EOF" | egrep 'J|u'
    Jestliže nechceme expandovat proměnné, uzavřeme příznak určující konec vstupu do uvozovek ($USER, $HOME, $SHELL).
    EOF

    exit 0

    Ještě si skript spustíme.

    # ./here.sh $USER=root
    $HOME=/root
    $SHELL=/bin/bash
    Jestliže nechceme expandovat proměnné, uzavřeme příznak určující konec vstupu do uvozovek ($USER, $HOME, $SHELL).

    Metaznaky shellu

    Lze je použít k neúplnému zadání jména souboru.

    POZOR neztotožňujte metaznaky shellu s regulárními výrazy, jsou to dvě různé věci. Metaznaky expanduje přímo shell. A proto když chceme nějakému programu předat regulární výraz, musíme ho uzavřít například do apostrofů.

    • * - libovolný řetězec (může být i nulové délky)
    • ? - libovolný jeden znak
    • ~ - domovský adresář ($HOME)
    • ~UJ - domovský adresář uživatele UJ
    • ~+ - aktuální pracovní adresář ($PWD)
    • ~- - předchozí pracovní adresář ($OLDPWD)
    • [abc...] - jakýkoliv znak uvedený v [], lze použít - k zápisu intervalu znaků např a-z, 0-9
    • [!abc...] - opak předchozího (tj. jakýkoliv znak mimo uvedených znaků v [])

    První příkaz smaže zálohy souborů (soubory končící na ~). Znak ~ nebude v tomto případě expandován.

    $ rm *~
    $ ls dil*.html
    dil2.html  dil3.html  dil4.html  dil5.html  dil6.html
    $ ls [di]*.html
    dil2.html  dil3.html  dil4.html  dil5.html  dil6.html  index.html

    Regulární výrazy

    Jsou (mými slovy, přesná definice je "trochu" složitější :-D) vzory, s jejichž pomocí lze definovat společné rysy několika různých řádků a tím pádem je reprezentovat jako jeden regulární výraz. Níže uvedené speciální znaky jsou použitelné např. v grep, egrep, sed, ed, ex, awk.

    • . - jakýkoliv znak (mimo znaku nového řádku)
    • * - libovolný počet (i nulový) opakování předchozího znaku (lze použít i regulární výraz)
    • ^ - následující výraz musí odpovídat začátku řádku
    • $ - předchozí výraz musí odpovídat konci řádku
    • \ - vypíná speciální význam následujícího znaku
    • [] - jakýkoliv znak uvedený v hranatých závorkách, speciální znaky zde mají normální význam, mimo - tu lze použít pro zápis intervalů (a-z atd.) a znak ^ uvedený jako první způsobí negaci (tj. jakýkoliv znak neuvedený v ...)

    Použijeme programy cat, grep a všechno si poctivě vyzkoušíme.

    $ cat << END > ./retezce.txt
    > abclinuxu
    > alfa
    > aaa
    > abcabcabc
    > znak $
    > a1a
    > aAa
    > END
    $ cat ./retezce.txt | grep '.*'
    abclinuxu
    alfa
    aaa
    abcabcabc
    znak $
    a1a
    aAa
    $ cat ./retezce.txt | grep '.* \$'
    znak $
    $ cat ./retezce.txt | grep '^a[a-z]*a$'
    alfa
    aaa
    $ cat ./retezce.txt | grep '^a[a-z0-9]*a$'
    alfa
    aaa
    a1a
    

    Filtry

    Jsou programy, které ze vstupu podle zadaného vzoru odfiltrují jen námi požadovaná data a pošlou je na výstup. Jsou jimi např. grep, egrep (grep -E) a fgrep (grep -F), jsou to vlastně stejné programy. Pro nás je důležité, že grep používá pro zápis regulárních výrazů starší notaci a egrep naopak novější notaci. Níže uvedené speciální znaky patří do novější notace a chceme-li je použít ve filtru grep, musíme před ně zapsat znak \.

    • + - jeden a více výskytů předchozího výrazu.
    • ? - jeden nebo žádný výskyt předchozího výrazu.
    • | - předcházející nebo následující výraz.
    • () - text odpovídající výrazu mezi závorkami se uloží do paměti a lze ho použít pomocí \1\9, čísluje se od vnějších závorek směrem dovnitř (např. ((abc)linuxu) \1 = "abclinuxu") a \2 = "abc". Nebo lze použít závorky k definování priority vyhodnocení.
    • {n,m} - interval opakování předchozího výrazu, {n} - opakuje se n-krát, {n,} n-krát a více, {n,m} n-krát až m-krát

    Pro lepší pochopení uvedu opět několik příkladů.

    $ cat ./retezce.txt | grep '^a\+$'
    aaa
    $ cat ./retezce.txt | egrep '^a+$'
    aaa
    $ cat ./retezce.txt | egrep '^abcl?'
    abclinuxu
    abcabcabc
    $ cat ./retezce.txt | egrep '^c|z'
    znak $
    $ cat ./retezce.txt | egrep '(abc)+'
    abclinuxu
    abcabcabc
    $ cat ./retezce.txt | egrep '^(.*)\1\1$'
    aaa
    abcabcabc
    $ cat ./retezce.txt | egrep '^a{3}$'
    aaa
    $ cat ./retezce.txt | egrep '^a{2,}$'
    aaa
    $ cat ./retezce.txt | egrep '^a{1,3}$'
    aaa
    

    Proudové editory

    Z názvu je zřejmé, že slouží k proudové editaci dat. O načítání vstupu se starají sami. Mají k dispozici sadu příkazů, pomocí které data upravují (obvykle pracují s jedním řádkem), např. sed a nebo na složitější věci awk.

    Sed

    Syntaxe příkazu:

    Začátek,Konec!InstrukceArgumenty

    • Začátek - číslo řádku ($ značí poslední řádek) nebo /regulární výraz/
    • Konec - číslo řádku nebo /regulární výraz/
    • ! - neguje předchozí body
    • Instrukce - mají jedno písmeno
    • Argumenty - k některým instrukcím

    Není-li uveden Začátek a Konec, aplikuje se instrukce na každý vstupní řádek. Je-li uveden pouze Začátek, aplikuje se instrukce pouze na odpovídající řádek (či řádky) a je-li uvedeno obojí, tak od řádku odpovídajícímu Začátek se budou aplikovat instrukce a od řádku odpovídajícímu Konec se aplikovat přestanou. Níže jsou uvedeny některé Instrukce a jejich Argumenty.

    • s/vzorek/náhrada/příznaky - nahradí první nalezený vzorek náhradou. Příznaky: n - nahradí n-tý výskyt vzorku (1 až 512), g - nahradí všechny výskyty vzorku.
    • w soubor - do souboru uloží vstupní řádek (řádky)
    • r soubor - soubor načte do vstupu
    • p - vypíše vstupní řádek na výstup
    • n - přesune se na další vstupní řádek
    • d - vstupní řádek je smazán
    • y/původní znaky/nové znaky/ - přeloží znaky (man tr)
    • : - označí řádek skriptu pro odskok Instrukcí t nebo b
    • t - byla-li provedena substituce, skočí na následující značku :, není-li uvedena, skočí na konec skriptu
    • {} - zajistí aplikaci více příkazů na jednu adresu
    $ cat ./retezce.txt | sed '2,$s/a/?/g'
    abclinuxu
    ?lf?
    ???
    ?bc?bc?bc
    zn?k $
    ?1?
    ?A?
    $ cat ./retezce.txt | sed -n '2p'
    alfa
    $ cat ./retezce.txt | sed -n '1{
    > n
    > p
    > }'
    alfa
    $ cat ./retezce.txt | sed '2p
    > d'
    alfa
    $ cat ./retezce.txt | sed '4y/a/?/
    > 4!d'
    ?bc?bc?bc
    

    Na závěr uvedu ještě jeden příklad ve formě skriptu sed.sh.

    #!/bin/bash
    
    spojka="je bydliště"
    cat <<EOF | sed \
    "s/^\(.\+j\) \(.\+\)o:\(.\+\)\$/\3 $s \1e \2a/
     t
     s/^\(.\+j\) \(.\+\):\(.\+\)\$/\3 $s \1e \2a/
     t
     s/^\(.\+\) \(.\+\)o:\(.\+\)\$/\3 $s \1a \2a/
     t
     s/^\(.\+\) \(.\+\):\(.\+\)\$/\3 $s \1a \2a/"
    Petr Novák:Praha
    Viktor Igo:Brno
    Blažej Vodník:Plzeň
    Jan Hugo:Hradec Králové
    Metoděj Sporák:Ostrava
    EOF
    
    exit 0
    

    Výstup skriptu vypadá následovně.

    $ ./sed.sh
    Praha je bydliště Petra Nováka
    Brno je bydliště Viktora Iga
    Plzeň je bydliště Blažeje Vodníka
    Hradec Králové je bydliště Jana Huga
    Ostrava je bydliště Metoděje Sporáka
    

    V případě, že bychom chtěli zajistit správné skloňování úplně pro všechny jména a přijmení, určitě by výše uvedené řešení nebylo to nejkratší a nejvhodnější, berte ho pouze jako ukázku.

    Nejčtenější články posledního měsíce

    Týden na ITBiz: Umělá inteligence ve třídě – učitelé bijí na poplach, ale nevzdávají se technologií
    Týden na ITBiz: Ohlášení podle nového zákona o kybernetické bezpečnosti provedlo přes 4800 organizací
    Týden na ScienceMag.cz: Umělá inteligence kopíruje vědce, má své výsledky umět zdůvodňovat

    Nejkomentovanější články posledního měsíce

      všechny statistiky »

    Seriál BASH (dílů: 6)

    BASH - I (první díl)
    <—« BASH - IV
    »—> BASH - VI
    BASH - VI (poslední díl)

    Související články

    BASH - I (Úvod, editace příkazové řádky)
    BASH - II (Základní příkazy, roury a přesměrování)
    BASH - III (Proměnné, podmínky a cykly)
    BASH - IV (Funkce a příkazy)
    BASH - VI (Ladění skriptů, odchytávání signálů a příklady)

    Odkazy a zdroje

    BASH - GNU Project

    Další články z této rubriky

    VDR a DVB-T2, část 2.
    VDR a DVB-T2, část 1.
    Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
    MapTiler – proměňte obrázek v zoomovatelnou mapu
    Syncthing
           

    Hodnocení: 37 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Diskuse byla administrátory uzamčena

    24.11.2003 18:18 me
    Rozbalit Rozbalit vše Lepsi priklad prosim
    Domnivam se, ze by bylo pro zacatecniky uzitecnejsi, kdyby jim byl nabidnut priklad, ktery budou moci pouzit v beznem zivote. Priklad u prikazu sed je sice zajimavy ale neprosto neuzitecny. Radsi by jsem se naucil jak vypreparovat prvni radek souboru, jak ziskat radek posledni, jak ziskat vse krome prvniho radku, ... Proste par jednoduchych prikazu, ktere se obcas hodi a pritom demonstruji moznosti a pouziti sed editoru. A az potom treba nejaky absurdni priklad, demonstrujici rozsirene moznosti...
    24.11.2003 20:47 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Lepsi priklad prosim
    $ sed -n '1p' < ./soubor
    První řádek
    $ sed -n '$p' < ./soubor
    Poslední řádek
    $ sed -n '1!p' < ./soubor
    Druhý řádek
    Třetí řádek
    Poslední řádek

    Chce ještě někdo zodpovědět nějaký konkrétní příklad?

    3.1.2004 14:41 Jaroslav Novak
    Rozbalit Rozbalit vše Lepsi priklad prosim
    Zajimalo by me, jak projit nekolik souboru v adresari a v kazdem nahradit dane slovo nejakym jinym. To je takovy priklad ze zivota.
    3.1.2004 18:34 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Lepsi priklad prosim
    #!/bin/bash
    
    mv $1 $1.old
    sed 's/ahoj/nazdar/' $1.old > $1
    #rm $1.old
    exit 0
    
    $ find -type f | xargs -i ../skript.sh {}
    
    3.1.2004 20:02 Jaroslav Novak
    Rozbalit Rozbalit vše RE: Lepsi priklad prosim
    Dekuji, a dalo by se pred kazde nalezene "ahoj" vlozit odradkovani? Nebo nahradit "ahoj" znakem pro odradkovani a opet "ahoj". Jenom me nenapada jak napsat ten znak pro odradkovani. Nebo i jine znaky, jako treba tabulator.
    24.2.2004 00:01 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Lepsi priklad prosim
    $ cat soubor
    nazdarahojnazdarahojnazdarahojnazdar
    
    $ sed 's/ahoj/\n/g' < ./soubor
    nazdar
    nazdar
    nazdar
    nazdar
    
    $ sed 's/\(ahoj\)/\n\1\n/g' < ./soubor
    nazdar
    ahoj
    nazdar
    ahoj
    nazdar
    ahoj
    nazdar
    
    20.3.2011 16:21 conf
    Rozbalit Rozbalit vše Re: RE: Lepsi priklad prosim
    zdravim, chtel bych se zeptat jestli je nejaka moznost jak si v sedu ulozit nalezeny vzorek a pak ho pouzit napr: mám nejakou vetu: testovaci věta je toto. a nad kazdym radkem souboru mam posloupnost prikazu sed -e "s/blabla/" a v jednu chvili potrebuju najit vzorek věta a nahradit ho napr. světak ...takze světak

    je tedy nejak mozne uprostred sedu si vzorek ulozit do promene nb ho primo prenest do prostred vkladane substituce? děkuji
    23.2.2004 15:32 JaSel | skóre: 17 | blog: kseles
    Rozbalit Rozbalit vše Lepsi priklad prosim
    Nejak to nemuzu rozlousknout: Potrebuju vymazat vsechny radky, na kterych je slovo 'Error'. Predem dik za radu.
    23.2.2004 23:31 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Lepsi priklad prosim
    $ cat soubor
    Řádek 1
    Error 2
    Řádek 3
    Error 4
    $ egrep -v '^Error.+$' < ./soubor
    Řádek 1
    Řádek 3
    
    4.3.2004 15:53 Jan Perich
    Rozbalit Rozbalit vše Prosim o radu
    Každopádně díky za váš seriál. Je super.

    Vícekrát jsem řešil problém, že potřebuju získat ze souboru nějakou konkrétní informaci a tu pak předat do nějaké proměnné.

    napr: Někde v souboru (o více řádcích) by se mělo vyskytovat "Access Point: MAC adresa"

    řešil jsem to takhle:

    APMAC=`cat soubor | \/bin/sed -e \ "/Access Point/!d /Access Point/s/.*Access Point: \([0-9A-F:]\{17\}\) */\1/ "`

    ale zdá se mi to hrozně krkolomné. Šlo by to zjednodušit (nebo dělat nějak úplně jinak?)
    8.3.2004 20:38 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Prosim o radu
    sed -n 's/.*Access Point: \([0-9A-F:]\{17\}\).*/\1/p' soubor
    6.3.2005 11:17 J. Krajkář
    Rozbalit Rozbalit vše Použití filtru...
    Dobrý den, jsem začátečník v Bashi i v Linuxu jako takovém a řeším teď takový skriptík, který načte své argumenty a potom s nimi operuje jako s čísly (přesněji řečeno - snaží se je seřadit), ale pokud zadám do argumentů nečíselnou hodnotu (třeba ahoj), tak ostatní čísla sice seřadí, ale vypíše hodně chybových hlášek a to ahoj mezi čísly zůstane. Nešlo by přes grep zařídit, aby nečíselné argumenty ignoroval? Jestli ano, tak jak?
    7.3.2005 12:33 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Použití filtru...

    Můžeš např. všechno kromě čísel a mezer smazat.

    $ echo "1234 ahoj 4321" | sed -n 's/[^0-9 ]//gp'
    1234  4321
    

    Ale podle mě bude lepší zkontrolovat všechny argumenty a v případě, že uživatel v některém z nich zadá cokoliv jiného než číslo, zakřičí se na něj a program se ukončí.

    for argument in $@; do
      if [ $(echo $argument | grep '[^0-9]' | wc -l) -ne 0 ]; then
        echo "Argument '$argument' není číslo!!!"
        exit 1
      fi
    done
    
    10.3.2005 16:37 J. Krajkář
    Rozbalit Rozbalit vše Re: Použití filtru...
    Výborně, všecho funguje tak, jak má. Mnohokrát děkuji...
    19.12.2006 12:22 poraďte prosím
    Rozbalit Rozbalit vše Re: BASH - V
    potřebuju poradit jak mám udělat abych do proměnné dostal počet nějakých řetězcu které jsou v souboru
    19.12.2006 12:35 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: BASH - V

    Rádi Ti pomůžeme, ale specifikuj prosím Tvůj problém jednoznačně, nejlepší bude když uvedeš konkrétní příklad, co máš a co z toho chceš dostat.

    19.12.2006 12:47 poraďte prosím
    Rozbalit Rozbalit vše Re: BASH - V
    No mám adresář ahoj a uvnitř mám soubory. Mam vybrat soubory s příponou xml, které obsahujou takové značky jako v html kodu no a já chci spočítat kolik je těch značek v každém souboru a zapsat do souboru který se bude jmenovat jako orinalni_nazev_souboru.statistika.txt
    26.12.2006 14:31 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: BASH - V

    $ cat pocet_tagu.sh
    #!/bin/bash
    
    if [ $# -ne 1 ]; then
      echo "Usage: $0 file.xml"
      exit
    fi
    
    echo -e "\n$1:"
    
    tags_all=$(cat $1 |sed -n 's/[^>]*\(<[^ >]\+[ >]\)/\1\n/gp' |grep "^<[^\/]" |sort)
    tags_uniq=$(echo $tags_all |sed 'y/ /\n/' |uniq)
    
    for tag in $tags_uniq; do
      count=$(echo $tags_all |sed 'y/ /\n/' |grep $tag |wc -l)
      printf "  %-20s %10i\n" $tag $count
    done
    

    $ find -type f -regex ".*\.xml" |xargs -i ./pocet_tagu.sh {}
    
    ./soubor02.xml:
      <accelerator                  2
      <!DOCTYPE                     1
      <glade-interface>             1
      <child>                     236
      <child                      250
      <packing>                   206
      <placeholder/>                2
      <property                  2521
      <signal                      36
      <widget                     258
      <?xml                         1
    
    ./soubor01.xml:
      <kocka>                       2
      <pes>                         2
      <xml>                         1
      <zvire>                       2
    
    

    30.11.2007 01:08 pez
    Rozbalit Rozbalit vše Re: BASH - V
    ;-)
    IFS="<";
    set -- $(cat "$1");
    for tag in "$@" ; do
            IFS=" >";
            set -- $tag;
            echo "$1";
    done | sort | uniq -c
    
    30.11.2007 01:19 pez
    Rozbalit Rozbalit vše Re: BASH - V
    nebo jeste kratsi:
    IFS="<";
    set -- $(cat "$1");
    for tag in "$@" ; do echo "${tag%%[ >]*}"; done | sort | uniq -c
    
    10.1.2007 20:37 Jozef Behrán
    Rozbalit Rozbalit vše Vyhodnocování tildy
    V článku chybí, že metaznak "~" se vyhodnocuje pouze pokud je na začátku argumentu:
    $ echo ~
    /home/jozef
    $ echo a~
    a~
    $ echo a\ ~
    a ~
    
    10.1.2007 21:00 Jozef Behrán
    Rozbalit Rozbalit vše Třeba pri používání "--prefix"
    Což může mít význam třeba při kompilaci:
    $ ./configure --prefix=~/myprogs
    configure: error: expected an absolute directory name for --prefix: ~/myprogs
    $ ./configure --prefix=$HOME/myprogs
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    ... atd. (takhle mi to už funguje) ...
    
    P.S. Takhle kompiluju software pokud nechci spouštět make install jako root. Prostě jsem si do .bash_profile přidal příkaz který přidal ~/myprogs/bin do PATH a můžu takhle zkompilovaný a nainstalovaný programy normálně spouštět jako kdyby byli kompilované instalované "normálním způsobem". Zatím mi všechny takhle kompilované a instalované programy fungovali bez problémů (mezi nimi jsou i takové fajnové vychytávky jako třeba mplayer). Dělám to tak, protože jsem poněkud paranoidní co se týče poskytování ROOT oprávnění neznámým skriptům a programům (čti: normální sysadmin).
    21.4.2014 16:13 pomo
    Rozbalit Rozbalit vše Re: BASH - V
    potreboval by som zo stringu ktory vyyera nejak tak, ze vsetko je jeden riadok " ****** 2010 ahoj = 2010 ahoj = afhdufh "atd ze mi zoberie vsetko co zacina 4 cislom a konci = a vzpice mi to na konzulu a vzdy na novy riadok
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.