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 19:55 | Zajímavý článek

Byly zveřejněny (pdf) podrobnosti o kritické bezpečnostní chybě CVE-2017-12542 v HPE iLO 4 (Integrated Lights-Out), tj. v proprietárním řešení společnosti Hewlett Packard Enterprise pro vzdálenou správu jejich serverů. Bezpečnostní chyba zneužitelná k obejití autentizace a k vzdálenému spuštění libovolného kódu byla opravena již v květnu loňského roku ve verzi 2.53.

Ladislav Hagara | Komentářů: 1
včera 17:55 | Zajímavý projekt

CSIRT.CZ informuje o CTF (Capture the Flag) platformě ZSIS CTF s úlohami pro procvičování praktických dovedností z oblasti kybernetické bezpečnosti a upozorňuje na soutěž Google Capture the Flag 2018, kde je možné vyhrát zajímavé ceny.

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

Byly zveřejněny prezentace a videozáznamy přednášek z prvního československého setkání síťových operátorů CSNOG konaného 11. a 12. června v Brně a semináře IPv6 2018 uskutečněného 6. června v Praze.

Ladislav Hagara | Komentářů: 0
včera 16:11 | Komunita

Svobodný unixový operační systém FreeBSD slaví 25 let. Přesně před pětadvaceti lety, tj. 19. června 1993, byl vybrán název FreeBSD.

Ladislav Hagara | Komentářů: 0
včera 15:11 | Komunita

Oficiální YouTube kanál Blenderu je již několik dní blokován. Nadace Blender Foundation informuje, že od společnosti Google dostala šestistránkový návrh nové smlouvy (pdf). Zdá se, že podmínkou další spolupráce je zapnutí reklam na kanálu, tj. zpeněžení obsahu.

Ladislav Hagara | Komentářů: 22
včera 01:55 | Nová verze

Byla vydána verze 1.13 multiplatformního open source textového editoru Brackets (Wikipedie, GitHub). Přehled novinek v oficiálním oznámení a v poznámkách k vydání. Brackets je nově dostupný také jako balíček ve formátu Flatpak z oficiálního repozitáře Flathub.

Ladislav Hagara | Komentářů: 3
18.6. 18:44 | Komunita

Oficiální YouTube kanál Blenderu je již několik dní blokován. Důvody jsou zatím nejasné. Pravděpodobně chyba YouTube. Dění lze sledovat na Twitteru Tona Roosendaala.

Ladislav Hagara | Komentářů: 18
18.6. 17:55 | Zajímavý software

Na GitHubu byly pod open source licencí LLVM zveřejněny zdrojové kódy překladače programovacího jazyka C++ Zapcc vycházejícího z Clangu/LLVM. Překlad pomocí Zapccu je díky lepšímu kešování obvykle několikrát rychlejší než překlad pomocí Clangu. V březnu loňského roku byl vydán Zapcc ve verzi 1.0.

Ladislav Hagara | Komentářů: 0
18.6. 17:22 | Pozvánky

Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.

xkucf03 | Komentářů: 1
15.6. 22:44 | Zajímavý článek

Na blogu projektu NeoPG (GitHub), kryptografického softwaru vycházejícího z GnuPG, byly zveřejněny 4 příspěvky detailně popisující aktuální bezpečnostní problémy v GnuPG a souvisejících softwarových produktech. V prvním příspěvku je ukázáno, že je možné vytvořit zprávu, o které budou Earlybird, Evolution, Mutt nebo Outlook tvrdit, že jí dešifrovali a přitom ale zpráva vůbec zašifrována nebyla. V druhém příspěvku je popsána

… více »
Ladislav Hagara | Komentářů: 8
Jak čtete delší texty z webových stránek?
 (78%)
 (21%)
 (4%)
 (7%)
 (3%)
 (11%)
Celkem 215 hlasů
 Komentářů: 36, poslední 18.6. 21:16
    Rozcestník

    Dotaz: Postupne nacitani prvnich dvou souboru z mnoha v BASHi

    tomes.io avatar 20.10.2012 17:01 tomes.io | skóre: 12 | blog: tomesh
    Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Přečteno: 161×
    Ahoj,

    napsal jsem si skriptik, ktery mi porovnava vzdy prave dva textove soubory:
    #! /bin/bash
      
    input1="$1"
    input2="$2"
      
    while read line
    do
            if grep -e "$line" "$input2" &>/dev/null
            then
               echo "..." >/dev/null
            else
                    sed -i "s#$line#!$line#g" "$input1" "$input2"
            fi
    done <"$input1"
    
    while read line
    do
            if grep -e "$line" "$input1" &>/dev/null
            then
               echo "..." >/dev/null
            else
                    sed -i "s#$line#!$line#g" "$input2" "$input1"
            fi
    done <"$input2"
    Jenze takovych souboru, potrebuju naraz zpracovat stovky. Dejme tomu, ze mam skript v adresari, kde jsou jenom ty .txt soubory. Chtel bych skript spustit tak, aby si vzal prvni dva soubory, zpracoval je, pak si vzal dalsi dva, dalsi dva atd. az by zpracoval o dvojicich vsechny soubory z adresare.

    SOubory jsou pojemnovany takto:
    01.txt.identifikacnicislo, 01.txt.jineidentifikacnicislo, 02.txt.identifikacnicislo, 03.txt.ID ...
    Budu rad za jakoukoliv pomoc. Diky,

    Řešení dotazu:


    Odpovědi

    20.10.2012 18:01 Peter Golis | skóre: 56 | Bratislava
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Pokiaľ sa tie súbory líšia v sekvencii a naraz ich môže byť 98 (pri vynechaní kombinácie 00.txt.identifikacnicislo), tak ich vylistujeme a zoberieme prvé dva: ls -1 | sort -n | head -2

    ale, v praxi to bude vyzerať inak.
    20.10.2012 18:12 l4m4
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Předně bych asi naráz našel řádky, které jsou v input2 ale nejsou v input1. Pokud se řádky v input2 neopakují, je to snadné:
    sort $input1 $input1 $input2 | uniq -u >only2
    
    Následně s klidem používáš řádky coby regulární výrazy. To samozřejmě nebude dělat to, co má, když budou obsahovat znaky, které mají v regexpu speciální význam, je zapotřebí je oescapovat. Přitom se rovnou mohou upravit na regulární výrazy pro úpravu input1
    sed -i 's#[...]#\\\0#g;s#.*#s/^\0$/!\\0/#' only2
               ^^^ sem přijde seznam těch speciálních znaků  
    
    A pak se už akorát input1 upraví pomocí only2
    sed -i -f only2 $input1
    
    Tvůj skript provádí vždy modifikaci input1 i input2, ale když input2 ten řádek neobsahuje, tak není co modifikovat a toto je reundantní -- pokud jsem pochopil správně, co to má dělat, možná by nebylo na škodu to popsat i slovně.

    Analogicky křížem. V tomto ohledu by mi přišlo přirozenější nejdřív vygenerovat skripty v sedu only2 a only1, pak je teprve použít na příslušné soubory. Ale možná úloha vyžaduje aby výsledek zpracování závisel na tom, co s křížovým souborem provedlo v prním kroku... Opět by to vyjasnil slovní popis.

    tomes.io avatar 20.10.2012 19:08 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Priznam se, ze moc nerozumim tomu, jak by
    sort $input1 $input1 $input2 | uniq -u >only2
    vyresil muj problem. Nijak nevidim, jak by si tento prikaz bral z adresare postupne dva a dva soubory za sebou atakdale az by projel cely adresar...Nebo mi neco unika.. nejsem v bashi zbehly. V promennych input1 a input2 jsou preci jmena dvou soboru, ktere skriptu zadam:
    ./compare.sh soubor1 soubor2
    Ale ty jmena souboru mu zadam ja rucne na vstupu z commandlajny. A ja potrebuju to zadavani zautomatizovat tak, jak jsem popsal vyse.

    Ja bych potreboval asi nejaky regexp, ktery by skriptu jako parametry postupne prirazoval prvni dva soubory z adresare, pak dalsi dva soubory atd. rozumis.

    Jinak v souborech nejsou redundantni radky (to je osetrene jinym skriptem uz). Cili na vstupu se predpokladaji dva txt soubory, na stejnych radcich maji stejne vety a ty se porovnavaji, resp se hledaji preklepy. pokud se njde nesrovnalost, skript v obou souborech oznaci zacatek prislusneho radku vykricnikem. Tim oznaci ze vetu nejsou stejne.
    20.10.2012 19:12 l4m4
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Myslel jsem, že je problém v tom, že použití takové monstrozity, kde se soubory čtou v shellu po řádcích a po každém přečteném řádku se spouštějí nějaké programy, je na stovky souborů nepoužitelně pomalé. Tudíž jsem navrhl, jak každou dvojici kompletně zpracovat pomocí pár příkazů.
    tomes.io avatar 20.10.2012 19:56 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    No dobre, ale to porad neresi, jak do skriptu dostat vzdycky postupne ty dva a dva soubory ke zpracovani :) Odhledneme ted od toho, jakym zpusobem ten skript soubory zpracovava. Otazka zni, jak na jeho vstup, jako parametry, dostat vzdy dva a dva soubory postupne z celeho adresare....
    20.10.2012 20:06 l4m4
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    To popsal Kit, nicméně to je ta jednoduchá část...
    20.10.2012 19:44 Kit
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Není lepší místo compare.sh použít diff?
    #!/bin/sh
    while test "$#" -gt 0; do
      diff "$1" "$2"
      shift 2
    done
    
    tomes.io avatar 20.10.2012 19:52 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Ja potrebuju porovnavat radek po radku, aby mohl oznacit konkretni radky. Tvuj skript porovnava cele soubory a nepamatuju se, ze by diff umoznoval takovou praci s radky, ktera by mi umoznila je oznacovat tak, jak jsem popsal vyse.
    20.10.2012 19:58 Kit
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Ale na tvou původní otázku jsem ti snad odpověděl, nebo snad ne? Jestli to potřebuješ polopatě, tak tady:
    #!/bin/sh
    while test "$#" -gt 0; do
      compare.sh "$1" "$2"
      shift 2
    done
    
    Jinak compare.sh si můžeš nadefinovat i jako funkci. Tím se to dost urychlí.
    tomes.io avatar 20.10.2012 20:25 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Postupne nacitani prvnich dvou souboru z mnoha v BASHi
    Ajo, jo uz mi to docvaklo. Diky. Ja obcas potrebuju veci vysvetlit polopaticky ;)

    Založit nové vláknoNahoru

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

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