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:22 | Bezpečnostní upozornění

Společnost ZONER informuje o bezpečnostním incidentu, při kterém došlo ke zcizení a zveřejnění části přihlašovacích údajů zákazníků k elektronické poště a webhostingu CZECHIA.COM.

Ladislav Hagara | Komentářů: 0
včera 23:44 | Nová verze

Byla vydána nová stabilní verze 1.13 (1.13.1008.32) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují možnost zobrazení otevřených i uzavřených listů pomocí ikonky Okno na postranní liště a vylepšené stahování (YouTube). Nejnovější Vivaldi je postaveno na Chromiu 62.0.3202.97.

Ladislav Hagara | Komentářů: 0
včera 20:55 | Nová verze

Byla vydána verze 2017.3 dnes již průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux. Aktualizovat systém lze pomocí příkazů "apt update; apt dist-upgrade; reboot". Z novinek lze zmínit 4 nové nástroje: InSpy, CherryTree, Sublist3r a OSRFramework.

Ladislav Hagara | Komentářů: 0
včera 01:55 | Bezpečnostní upozornění

Společnost Uber potvrdila bezpečnostní incident a únik dat v roce 2016. Unikly údaje o 57 milionech cestujících (jména, emailové adresy a čísla mobilních telefonů) a 600 tisících řidičích (navíc čísla řidičských průkazů).

Ladislav Hagara | Komentářů: 1
21.11. 23:44 | Humor

Co vypíše příkaz man půl hodiny po půlnoci? Text "gimme gimme gimme". Jedná se o virtuální velikonoční vajíčko připomínající skupinu ABBA a její hit Gimme! Gimme! Gimme! (A Man After Midnight). Problém nastane, pokud gimme gimme gimme nabourá automatizované testování softwaru. To se pak příkaz man musí opravit [Bug 1515352] [reddit].

Ladislav Hagara | Komentářů: 10
21.11. 18:11 | Zajímavý článek

Mozilla.cz informuje, že Firefox na Fedoře podporuje Client Side Decorations. Firefox na Linuxu se vykresluje včetně standardního záhlaví okna, které je v případě webového prohlížeče většinou nadbytečné a ubírá drahocenné vertikální místo na obrazovce. Verze distribuovaná uživatelům Fedory však nyní obsahuje experimentální podporu pro takzvané Client Side Decorations, které umožňují vykreslování „oušek“ panelů do záhlaví okna.

Ladislav Hagara | Komentářů: 12
21.11. 05:00 | Bezpečnostní upozornění

Maxim Goryachy a Mark Ermolov ze společnosti Positive Technologies budou mít v prosinci na konferenci Black Hat Europe 2017 přednášku s názvem "Jak se nabourat do vypnutého počítače, a nebo jak v Intel Management Engine spustit vlastní nepodepsaný kód". O nalezeném bezpečnostním problému informovali společnost Intel. Ta bezpečnostní problém INTEL-SA-00086 v Intel Management Engine (ME), Intel Server Platform Services (SPS) a Intel

… více »
Ladislav Hagara | Komentářů: 38
21.11. 01:33 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Java. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více 10 elektronických knih a za 15 dolarů a více 15 elektronických knih věnovaných programovacímu jazyku Java od nakladatelství O'Reilly. Peníze lze libovolně rozdělit mezi nakladatelství O'Reilly, neziskovou organizaci Code for America a Humble Bundle.

Ladislav Hagara | Komentářů: 0
21.11. 00:11 | Zajímavý projekt

Článek na OMG! Ubuntu! představuje rodinu písma IBM Plex. Jedná se o open source písmo (GitHub) navržené a uvolněné společností IBM (YouTube, Carbon Design System). Ukázka na Font Squirrel.

Ladislav Hagara | Komentářů: 12
20.11. 23:22 | Komunita

Na Humble Bundle lze získat počítačovou hru Brütal Legend (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí ve středu v 19:00.

Ladislav Hagara | Komentářů: 0
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 749 hlasů
 Komentářů: 37, poslední 21.11. 15:21
    Rozcestník

    Dotaz: Obdoba diff - skript bash

    18.6.2006 17:02 Delphik
    Obdoba diff - skript bash
    Přečteno: 560×
    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.