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 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

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

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
včera 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 7
včera 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 4
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 31
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 3
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 57
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 670 hlasů
 Komentářů: 53, poslední včera 18:38
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: 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: 54 | 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.