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 00:55 | Komunita

Pocket (dříve Read It Later) (Wikipedie) je oblíbená služba umožňující uložit si článek z webu na později. V červnu 2015 s vydáním Firefoxu 38.0.5 se do té doby doplněk Pocket stal integrovanou součásti Firefoxu, a to i přes odpor celé řady uživatelů tohoto webového prohlížeče. Mozilla po měsících ustoupila a z integrované součásti se stal opět doplněk. Včera bylo oznámeno, že Mozilla službu Pocket kupila (Mozilla Blog, Pocket Blog).

Ladislav Hagara | Komentářů: 0
včera 23:55 | Pozvánky

Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1. 3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!

… více »
xkucf03 | Komentářů: 0
včera 18:30 | Komunita

Jednodeskový počítač Raspberry Pi slaví již 5 let. Prodej byl spuštěn 29. února 2012. O víkendu proběhne v Cambridgi velká narozeninová party. Na YouTube bylo při této příležitosti zveřejněno video představující zajímavé projekty postavené na Raspberry Pi.

Ladislav Hagara | Komentářů: 0
včera 18:30 | Nová verze

Byla vydána verze 2017.1.1 svobodného multiplatformního leteckého simulátoru FlightGear. Kódový název a výchozí letiště této verze je Bergen. Přehled novinek v Changelogu.

Ladislav Hagara | Komentářů: 0
včera 10:50 | Zajímavý software

Mozilla.cz informuje o dvou nových experimentálních funkcích v programu Firefox Test Pilot (zprávička). Snooze Tabs slouží k odkládání panelů na později. Pokud vám někdo pošle odkaz, ale vy nemáte čas si stránku hned přečíst, můžete si naplánovat otevření panelu na později. Stačí kliknout na tlačítko a vybrat, kdy chcete panel otevřít. Firefox panel schová a ve vybraný čas znovu otevře. Pulse umožňuje ohodnotit, jak dobře stránka funguje, např. jak rychle se ve Firefoxu načetla. Podle nasbíraných hodnocení pak bude Mozilla prohlížeč ladit.

Ladislav Hagara | Komentářů: 6
včera 02:00 | IT novinky

V Barceloně probíhá veletrh Mobile World Congress 2017. Nokia na něm například představila (360° video na YouTube) novou Nokii 3310 (YouTube). BlackBerry představilo BlackBerry KEYone (YouTube) s QWERTY klávesnicí. LG představilo LG G6 (YouTube). Huawei HUAWEI P10 a P10 Plus. Samsung představil tablet Galaxy Tab S3.

Ladislav Hagara | Komentářů: 1
26.2. 14:00 | Nová verze

Komunita kolem Linuxu From Scratch (LFS) vydala Linux Linux From Scratch 8.0 a Linux From Scratch 8.0 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází především s Glibc 2.25 a GCC 6.3.0. Současně bylo oznámeno vydání verze 8.0 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

Ladislav Hagara | Komentářů: 0
26.2. 11:11 | Nová verze

Byla vydána verze 0.10.0 webového prohlížeče qutebrowser (Wikipedie). Přehled novinek v příspěvku na blogu. Vývojáři qutebrowseru kladou důraz na ovladatelnost pomocí klávesnice a minimální GUI. Inspirovali se prohlížečem dwb a rozšířeními pro Firefox Vimperator a Pentadactyl. Prohlížeč qutebrowser je naprogramován v Pythonu a využívá PyQt5. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU GPL 3.

Ladislav Hagara | Komentářů: 33
25.2. 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 6
24.2. 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 727 hlasů
 Komentářů: 69, poslední dnes 01:02
    Rozcestník

    Dotaz: Obdoba diff - skript bash

    18.6.2006 17:02 Delphik
    Obdoba diff - skript bash
    Přečteno: 553×
    Dobrý den, jsem začátečník v bashi a vlastně i v linuxu, proto se obracím s prosbou o radu na zkušenější kolegy. Potřeboval bych v bashi naprogramovat náhradu příkazu diff na porovnání dvou souborů a to jen bez přepínáčů. Takže výsledný skript by se spouštěl ./porovnani.sh ./soubor1 ./soubor2 a vypsal by, které řádky nejsou v 1. a pak které nejsou v 2. souboru, popřípadě nic pokud jsou shodné. Předem děkuji za pomoc a omlouvám se že tu řeším takovouto "banalitu"

    Odpovědi

    18.6.2006 17:53 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Ahoj. Já sice skripty v BASHi nepíšu, ale tohle funguje:
    #!/usr/bin/env python
    import sys,os
    
    def getlines(filename):
        lines = {}
        for num, line in enumerate(file(filename)):
            lines[line.rstrip()] = num + 1
        return lines
    
    def compare(linesx, linesy):
        for line in linesx.keys():
            if linesy.has_key(line):
                continue
            print linesx[line], line
    
    lines1 = getlines(sys.argv[1])
    lines2 = getlines(sys.argv[2])
    
    compare(lines1, lines2)
    print '-'*80
    compare(lines2, lines1)
    
    A když to otestuju třeba na těchto souborech
    $ cat soubor1
    prvni
    spolecny
    treti
    tohle neni v tom druhem
    druhy
    
    $ cat soubor2
    prvni
    druhy
    treti
    spolecny
    a tohle zase neni v tom prvnim
    
    Tak to vypíše
    $./difflines.py soubor1 soubor2
    4 tohle neni v tom druhem
    ---------------------------------------------
    5 a tohle zase neni v tom prvnim
    
    Ukazuje to i čísla řádků.
    18.6.2006 18:20 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Eventuelně takhle:
    import sys
    a = file(sys.argv[1]).readlines()
    b = file(sys.argv[2]).readlines()
    sys.stdout.writelines([x for x in a if not x in b])
    sys.stdout.writelines([x for x in b if not x in a])
    
    ... ale to je jen taková hříčka.
    18.6.2006 19:39 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Něco jako
    a, b=ARGV[0..1].map{|x| File.open(x).readlines }
    puts a-b; puts b-a
    ? :-D ;-)
    18.6.2006 18:37 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Skriptík je to krásný, děkuji za pomoc, ale potřeboval bych ho přeci jenom v bashi. Přesto, ještě jednou děkuji.
    Marek Stopka avatar 18.6.2006 18:56 Marek Stopka | skóre: 57 | blog: Paranoidní blog | London, United Kingdom
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    A kterou vysokou školu že to studuješ? :-) Zase úkol?
    18.6.2006 20:39 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Kdyby VŠ ;-)
    19.6.2006 22:25 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Připadám si diskriminován. Když se řekne "v Bashi", tak se tím automaticky myslí všechno možné, ale python bohužel ne. ;-)
    $ cat soubor1 soubor2 | sort | uniq --unique
    a tohle zase neni v tom prvnim
    tohle neni v tom druhem
    
    19.6.2006 22:27 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    ... a kdo bude chtít, může si odstranit nejzbytečnější cat na světě. :-)
    19.6.2006 22:34 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Jestli si myslím správně, co je uniq --unique, tak by toto bylo nejjednodušší řešení a bylo by to super, jen jsem to zkoušel takhle fláknout do linuxu a nic. (Takhle ne;-) soubor1 a soubor2 jsem nahradil názvem souborů, které existujou)
    19.6.2006 22:59 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    A nedal jsi tam omylem dva stejné názvy souborů, jako se mi to stalo před chvílí? :-)
    Mě to funguje:
    chorchoj:22:56:12 ~$ cat soubor1
    prvni
    spolecny
    treti
    tohle neni v tom druhem
    druhy
    chorchoj:22:56:16 ~$ cat soubor2
    prvni
    druhy
    treti
    spolecny
    a tohle zase neni v tom prvnim
    chorchoj:22:56:18 ~$ sort soubor1 soubor2 | uniq --unique
    a tohle zase neni v tom prvnim
    tohle neni v tom druhem
    
    19.6.2006 23:18 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Nojo - jenže ono to nebude fungovat, když nějaký řádek bude v jednom souboru vícekrát. Že jsem se do toho vůbec pouštěl ...
    21.6.2006 21:48 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Potřeboval bych poradit. Opět. Dá se nějak zjistit úspěšnost nebo jinak nalezení něčeho pomocí sedu? Mám sed -n "/$searchstr/=" $i >out.s, kde $searchstr je vlastně regulární výraz a v $i je uložen název souboru dá se tedy nějak zjisti jestli něco našel a zapsal do souboru nebo to musím obejít nějak jinak. díky
    21.6.2006 21:53 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Zkontrolovat, zda má výsledný soubor nulovou délku?
    21.6.2006 21:58 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Zkusit to mohu a to udelam? Promin takove blbe dotazy. :-)
    21.6.2006 22:05 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    man test
    ...
           -s soubor
                  Pravda, když soubor existuje a má délku větší než nula.
    ...
    
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    21.6.2006 22:11 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Děkuji ti mnohokrát.Dost jsi mi pomohl.
    Jan Zahornadsky avatar 18.6.2006 19:03 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Ono asi záleží na přesném zadání -- protože i diff má několik různých algoritmů, které může na soubory aplikovat. Podle zvoleného algoritmu provnávání souborů se pak dá začít bavit o konkrétní implementaci. Nejzajímavější bude dle mně nějak vyřešit, že může být jen jeden stdin (pro while cyklus nebo jak se to bude implementovávat). A ještě zajímavá informace je, zda a jaké verze standardních nástrojů jako sed, grep lze užívat (je třeba možné užít GNU-specific rozšíření?).
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    18.6.2006 20:38 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Přesné zadání: Napište skript, který porovnává dva soubory (viz man diff) Toť vše. Přesně jak říkáte, zajímavé je, jak vyřešit 2 vstupy pro while nebo zdali by to šlo nějak obejít. Nějak se v tom ztrácím. Nevím co je GNU-specific rozšířen. Jinak si myslím, že lze použít jakéhokoliv nástroje kromně vlastního diff, a jestli existují, tak i jeho odnože nejsou povoleny.
    18.6.2006 20:44 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Vidím dvě možnosti.

    Použiješ diff.

    Pokud nemůžeš použít diff, protože jsi to dostal za domácí úkol, tak je na čase, aby ses začal učit... Řešit domácím úkol stylem "plácnu to do diskuze, však on se někdo najde kdo to vyřeší" není nejlepší způsob.
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    18.6.2006 21:11 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    No vidím, že ani pro tebe to neni hračka. Jinak by jsi to tu "vysmahl" a pak okomentoval. Zkus se nad tím zamyslet a uvidíš nové a nové problémy a pro člověka, který v tom skoro vůbec nedělá a nedělal (maximálně jednoduché příkazy grep, sed a awk jen zmíňka). Mně nejde o to, aby mi kdokoliv napsal přímo zdrojáček až pod nos, ale třeba jen nastínil řešení.
    18.6.2006 21:28 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Nikde tu nevidím tvou snahu problém řešit. Nevidím třeba nefunkční skript, který bys třeba napsal když jsi to zkoušel a podobně. Zkus si přečíst třeba návod na to jak se správně ptát. Domácí úkoly se totiž tímhle stylem neřeší. Zkus se nad tím zamyslet.

    Protože jsem to pochopil tak, že chceš aby ti někdo naservíroval hotový skript (jako desítky dalších kdesi v hlubinách fóra), rozhodl jsem se vůbec nepomáhat s řešením. To jestli něco umím nebo neumím nech na mě. Pokud chceš abych ti napsal řešení nebo poradil, můžeme se dohodnout na placené konzultaci, rád se ti potom budu věnovat.

    Výmluvy na to, že je někdo začátečník hned v úvodu dotazu nejsou moc dobrý nápad, proč se hned na začátek shazovat? Taky jsem jednou začínal a když si vzpomenu, kolik času jsem tomu věnoval tak si říkám, že v tom vymlouvajícího se začátečníka můžu nechat trochu vukoupat...

    Pokud chceš na mě reagovat, prosím nepiš to do diskuze ať tu nejsme OT. Napiš mi to emailem na zdenda@zdenda.com.
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    Jan Zahornadsky avatar 18.6.2006 21:34 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Tak ten man diff jsem zběžně proletěl, ale ani uspokojivý popis algoritmu jsem tam nenašel. Ono když si vezmeme blbý postup typu vezmi jeden řádek z jednoho, jeden z druhého souboru, pokud se liší, vypiš změny, jinak nevypisuj nic je de facto porovnávání souborů. A toto lze lehce dosáhnout tím, že "smícháš" soubory tak, že sudé řádky jsou z jednoho, liché z druhého.

    Nebo diff-kompatibilní by v podstatě bylo i řešení, kdy napíšeš, že se soubory změnily tak, že z prvního ubyli všechny řádky a v druhém všechny jeho řádky přibyly. Na to stačí opravdu moc jednoduchý sed :-D

    Právě, že ty dva vstupy jsou pro bash problém (osobně bych užil třeba awk, ale zadání je zadání). Dalo by se to řešit (hodně násilně) nějakým "bufferem", kde v proměnných A1, A2, A3, A4, ... jsou řádky prvního souboru, v proměnných B1, B2, ... druhého souboru. Pak na to hodíš kdejaký algoritmus si zamaneš.

    Lepší by bylo ty soubory spojit, třeba jak jsem naznačoval o sudých a lichých řádcích (jen je potřeba si promyslet, co s případem, kdy nemají stejně řádků). Ale asi na tuto strukturu opět nenapasuješ všechny algoritmy porovnání souborů.

    Ad cokoli-specific: chtěl jsem naznačit, že například my ve škole na UNIXu povinně pracujeme na Solarisu<flame>, protože se jedná o mnohem stabilnější UNIX než GNU/Linux</flame>. Ale ten třeba nepodporuje mnoho rozšíření, které jsou typické pro GNU, tedy GNU-specific.

    Ale pokud můžeš kromě diff používat cokoli... Co takhle comm? Ale to je jen další nápad, vracíme se k tomu, že zadání je dost nejednoznačné...
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    19.6.2006 20:33 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Právě o to jde, jak v bashi načíst jeden řádek z 1 souboru a zároveň z 2. Nějak nevím, jak na to.
    Jan Zahornadsky avatar 19.6.2006 21:57 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Právě to co vím uspokojivě nejde. Proto se ptám na algoritmus, který bys chtěl použít. Třeba to nebude potřeba (až tolik), třeba jak jsem naznačoval, ty řádky prokládaně zapsat do třetího souboru a pak číst jen ten jeden.

    V nejhorším případě lze celý jeden soubor načíst do proměnných shellu a druhý číst standardně... Ale to je řešení dost omezující, předpokládá, že soubory jsou rozumně velké.
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    19.6.2006 22:14 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Asi máš pravdu s tím smícháním souborů a výpisem, pokud se lichá řádka liší od sudé. Tím mne napadá otázka, jak se bude vlastně porovnávat? Co když bude v jednom souboru řádek jiný chybět. např
    1. soubor
    1
    2
    3
    4
    2. soubor
    1
    2
    4
    5
    Smíchaný soubor (jestli to dobře chápu)
    1
    1
    2
    2
    3
    4
    4
    5
    Pokud ho budu porovnávat po dvojicích, tak bude, podle mne, vyhazovat nesmysli typu 3 není v pravo a 4 není vlevo a to samé pro 4 a 5 ne? Pak jsi něco psal o nějakém velice jednoduchém sedu, ale to nějak nechápu.
    Jan Zahornadsky avatar 19.6.2006 23:29 Jan Zahornadsky | skóre: 22 | blog: hans_blog
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Ne, to funguje a nesmysly nehází. I klasický diff se někdy "zasekne" a řekne mi, že jsem hromadu řádků z jednoho souboru odebral a až nápadně podobnou hromadu řádků přidal. Toto púrokládání souborů je použitelné pouze u tohoto algoritmu (který, jen tak mezi námi, je pitomý až moc).

    Takže ten tvůj příklad napíše (jelikož výstup diffu není jednoznačný, existuje mnoho různých, ale správných řešení):
    3c3
    < 3
    ---
    > 4
    4c4
    < 4
    ---
    > 5
    
    Ohledně toho jednoduchého sedu -- tento prokládaný soubor nemusíš read-ovat po jednom řádku (pokud má hodně řádků, tak si kernel užije naplno fork() a exec() ;-) ). Protože navíc jeho struktura je dost jednoduchá a algoritmus ještě jednodušší, tak by se dal tento soubor jen prohnat sed skriptem a bylo by. Ale taky. Má to svá úskalí, třeba nevím, jak sed může zjistit, na kolikátém řádku se nachází apod. To by se třeba tedy do toho slitého souboru přidalo na začátek řádku nějaké info v pevném formátu (třeba první číslo na řádku by značilo první nebo druhý soubor, druhé číslo by značilo číslo řádku a pak právě jedna mezera a samotný řádek).
    Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
    19.6.2006 22:02 tomas
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Načtení dvou řádků se provede takto:
    exec 3<soubor1
    exec 4<soubor2
    IFS=''
    read -u 3 line1
    read -u 4 line2
    
    Napsat plně funkční diff nebude trivální. Začal bych tím, že bych nadefinoval zjednodušené zadání. Omezení by bylo takové, že je povolen maximální rozdíl 1 řádek v oblasti začínající a končící úplnou shodou.
    19.6.2006 22:21 Delphik
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    OK, díky
    Jakub Hájek avatar 19.6.2006 22:05 Jakub Hájek | skóre: 14 | blog: zamek | Praha
    Rozbalit Rozbalit vše Re: Obdoba diff - skript bash
    Nenapadlo me nic jineho nez si brat (treba) sedem postupne prvni, druhy, treti radky z obou souboru a pak zpracovat, plus jeste nejakou pdominku jestli v nekterem souboru nejsem na konci..

    Kdyby nekdo vedel, jak to udelat jednopruchodove, tak se take velmi rad priucim..
    Teprve tehdy, až nebudeme mít co ztratit, budeme opravdu svobodní.

    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.