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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 6
dnes 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
dnes 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
dnes 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

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

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

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

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 809 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 158×
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: 53 | 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.