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 04:55 | Nová verze

    Squeak (Wikipedie), open source implementace programovacího jazyka a prostředí Smalltalk, byl vydán ve verzi 6.1. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Bezpečnostní upozornění

    V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Zapscape aneb CVE-2026-64561. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala 6 let (od července 2020 do července 2026).

    Ladislav Hagara | Komentářů: 0
    včera 19:00 | IT novinky

    Počítačová hra Knytt napsaná v Multimedia Fusion 2 byla vydána před 20 lety. Při této příležitosti byl dnes představen moderní port (YouTube) této plošinovky na současné operační systémy pod názvem Knytt Classic. Je zdarma k dispozici na Steamu a GOG.com.

    Ladislav Hagara | Komentářů: 0
    včera 16:00 | IT novinky

    Americká technologická společnost Meta Platforms představila nový model umělé inteligence (AI) Muse Glimmer. Model je menší než přední modely AI od konkurence a má běžet přímo na počítačích uživatelů. Meta model zpřístupní jako open source, tedy otevřený software. Nový model je navržen tak, aby zvládal takzvané agentní úkoly na počítačích se spotřebitelskou grafickou kartou. Klade si tak za cíl uspokojit poptávku po systémech AI, které běží přímo na zařízeních uživatelů.

    Ladislav Hagara | Komentářů: 8
    včera 12:11 | Pozvánky

    V pátek 28. srpna 2026 se v pražském Karlíně uskuteční již osmý Mobilní Hackday. Akce začne v 10:00 a potrvá až do večera. Setkání proběhne v prostorách SUSE Linux, s.r.o. na adrese Křižíkova 148/34, Praha 8 – Karlín. Nejbližší zastávkou je Křižíkova, kam se lze dostat tramvají i metrem. Na programu budou například novinky z posledních měsíců, možnosti, jak si zjednodušit práci s LLM/AI, a také nová linuxová distribuce BengalOS, včetně … více »

    David Heidelberg | Komentářů: 0
    9.8. 17:22 | Nová verze

    Jakub Vrána vydal Adminer ve verzi 6.0.0 s více než 130 změnami: "Většina změn vznikla s asistencí Claude Opus 5. Někteří lidi se bojí, že AI asistence může kód zamořit technickým dluhem. To je jistě pravda, pokud vývojář všechny změny bezduše odbouchne Enterem. Ale pokud si pořádně projde plán, vyjedná v něm změny a pak totéž udělá i s vygenerovaným kódem, kvalita kódu stoupne a technický dluh naopak klesne. Je to jako párové programování s

    … více »
    Ladislav Hagara | Komentářů: 1
    9.8. 12:44 | Nová verze

    Sam Aaron vydal novou major verzi 5.0.0 aplikace Sonic Pi (Wikipedie) určené také pro výuku programování pomocí skládání hudby. Přehled novinek na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    8.8. 04:44 | IT novinky

    U příležitosti 30. výročí vydání počítačové hry Quake byla vydána nová epizoda s názvem Dawn of the Machine (Steam).

    Ladislav Hagara | Komentářů: 8
    7.8. 16:00 | Bezpečnostní upozornění

    Vládní CERT upozorňuje (𝕏) na sérii bezpečnostních záplat (CVSS 9.9) v produktech Cisco řešících kritické zranitelnosti umožňující obejití autentizace, eskalaci oprávnění, vzdálené spuštění kódu a odepření služby. Úspěšné zneužití může útočníkům umožnit získat neoprávněný přístup k dotčeným systémům, kompromitovat zařízení Cisco Catalyst SD-WAN a Cisco IOS XE, spustit libovolný kód, zpřístupnit citlivé informace nebo narušit dostupnost postižených systémů.

    Ladislav Hagara | Komentářů: 6
    7.8. 15:33 | IT novinky

    Soud v americkém státě Nové Mexiko ve čtvrtek nařídil internetové společnosti Meta Platforms zaplatit 567 milionů dolarů (téměř 12 miliard Kč) za újmy, které její platformy působí mladým lidem. S přihlédnutím k dřívějšímu verdiktu tak má společnost celkem zaplatit 942 milionů dolarů, což je malý zlomek jejího ročního výnosu, který loni činil 60 miliard dolarů. Čtvrteční verdikt firmě také nařizuje, aby změnila způsob, jakým její

    … více »
    Ladislav Hagara | Komentářů: 23
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2365 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Automaticke porovnani a oznaceni odlisnosti v txt souboru

    tomes.io avatar 3.8.2012 15:05 tomes.io | skóre: 12 | blog: tomesh
    Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Přečteno: 706×
    Ahoj,

    mam dva textove soubory a oba potrebuju skriptem porovnat radek po radku tak, aby skript nestejne radky oznacil.

    Tak me napadlo ze
     diff -c 
    oznaci radky, ktere jsou jine, vykricnikem:(!) na zacatku radku.

    No a napadlo me brat dycky radek po radku z kazdeho souboru do nejakeho tmp (tmp='tmpfile' kvuli bezpecnosti), ty porovnat diffem, pokud je radek stejny, tak appendnout
    >>
    do tmp souboru, pokud je radek jiny, diff ho oznaci a taky (oznaveny) radek pripne do tmp soubor. Pak tmp prepise puvodni soubor.

    Pseudoskript by vypadal nejak takto:
    #!/bin/bash
    while read line; do 
        echo $line > tmp          #vezme radek
                                  #zde porovnava s druhym, ale jak, nejakou vhodnou funkci?
        cat tmp >> temporary      #pripina do dalsiho docasneho postupne radek po radku, vcetne oznacenych
    done < "sample.txt"
    Byl bych rad, kdyby me nekdo nakopnul spravnym smerem.


    Řešení dotazu:


    Odpovědi

    3.8.2012 15:26 NN
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Kvuli bezpecnosti brat radek po radku ?? Proc tedy neskopirovat rovnou cele soubory a porovnat je diffem ?
    tomes.io avatar 3.8.2012 17:26 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Sorry, tam melo byt kvuli bezpecnosti
    tmpfile=`mktemp`
    . Je lepsi pouzit mktemp nez vytvoreni noveho docasneho souboru (kvuli symlink vulnerability). Pro potreby pseudokodu je to vsak irelevantni (navic mktemp umozni bezproblemove spusteni skriptu na jednom pocitaci vicekrat).

    Kdyby slo porovnat soubory diffem tak, aby mi tako vystup hodil jiz oznacene soubory, bylo by to fajn. Ale nevim, jak to udelat, nikde jsem takovou moznost nevygooglil, proto me napadl ten postup s porovnanim radek po radku.

    Zkratka, kdyz mam v jednom souboru:
    aaaaa
    bbbbb
    a v druhem:
    aaaaa
    ccccc
    tak chci, aby vystup skriptu byly soubory, ve kterych by byly nejak oznacene radky, ktere se neshoduji, napr v prvnim souborU:
    aaaaa
    (!)bbbbb
    v druhem:
    aaaaa
    (!)ccccc
    3.8.2012 18:59 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    #! /bin/bash
    
    input1="$1"
    input2="$2"
    
    while read line
    do
            if grep -e "$line" "$input2" &>/dev/null
            then
                    sed -i "s/$line/\!$line/" "$input1" "$input2"
            fi 
    done <./"$input1"
    

    Ako zaklad by to mohlo byt. Docasnymi subormi by som sa netrapil, iba to komplikuje vec. Staci spravit zalohu originalu pre spustenim skriptu.

    3.8.2012 19:03 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru

    Treba opravit sed, lebo v danom skripte pri prvej zhode konci. Spravne to ma byt:

    sed -i "s/$line/\!$line/g" "$input1" "$input2"
    tomes.io avatar 7.8.2012 09:31 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Super, tohle me docela nakoplo, zbytek vyzjistim uz z manualu. Diky.
    tomes.io avatar 8.8.2012 14:33 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    No tak to jako zaklad reseni selhava. neuvedomil jsem si, ze ten while bere pouze jeden radek z prvniho souboru.

    Prochazi WHILE soubor1, ale co ten soubor2? ten prece neprochazi radek po radku... Skript zkratka neudela vybec nic... neco jsem prehledl? Skrze ten cyklus to asi nepujde...
    8.8.2012 15:10 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru

    Aj ste to skusali spustit ??? Bo robi to, co ste chceli. Ak porovnavam dva subory a hladam zhodu, tak ak sa prejde cely prvy subor riadok po riadku, tak nie je dovod kontrolovat kazdy riadok z druheho a porovnavat s riadkami v prvom subore.

    Vid ukazku:

    #! /bin/bash
     
    input1="$1"
    input2="$2"
     
    while read line
    do
            if grep -w -e "$line" "$input2" &>/dev/null
            then
                    sed -i "s/$line/\!$line/" "$input1" "$input2"
            fi
    done <"$input1"
    

    test2.file

    aaaaa
    fdsafasdsdafbbbbb
    cccccsfdsfsd
    fffffff
    gggggasfsdf
    hjlkk
    ewiorjodsfsdfsdf
    ad;kl
    jlkfsfafaf
    xxxxxxdfsdfaf
    

    test1.file

    aaaaa
    bbbbb
    ccccc
    fffffff
    ggggg
    hjlkk
    ewiorjo
    ad;kl
    jlk
    xxxxxx
    

    Po spusteni skriptu je vysledok nasledovny:

    Lucias-MacBook-Pro:~ lucka$ grep -n ^! test*.file
    test1.file:1:!aaaaa
    test1.file:2:!bbbbb
    test1.file:4:!fffffff
    test1.file:6:!h!jlkk
    test1.file:8:!ad;kl
    test2.file:1:!aaaaa
    test2.file:4:!fffffff
    test2.file:6:!h!jlkk
    test2.file:8:!ad;kl
    Lucias-MacBook-Pro:~ lucka$ grep -v -n ^! test*.file
    test1.file:3:ccccc
    test1.file:5:ggggg
    test1.file:7:ewiorjo
    test1.file:9:jlk
    test1.file:10:xxxxxx
    test2.file:2:fdsafasdsdaf!!bbbbb
    test2.file:3:cccccsfdsfsd
    test2.file:5:gggggasfsdf
    test2.file:7:ewiorjodsfsdfsdf
    test2.file:9:jlkfsfafaf
    test2.file:10:xxxxxxdfsdfaf
    

    Subory vyzeraju samozrejme inak, len som chcel ukazat zhody osve od riadkov, kde ku zhodam nedoslo, aby si si to mohol porovnat a videl dovod, preco je iba mrhanim prostriedkov konat inak.

    tomes.io avatar 8.8.2012 19:08 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Jasneze jsem to zkousel :) Ale v praci na win pres cygwin. Doma na Fedore to pracuje, takze se omlouvam za paniku. Fakt jsem myslel, ze je to ve spatnem cyklu . Takze uz to jede, sice to oznacuje shodne radky (chtel jsem neshodne) ale to je uz malickost.

    Horsi je, ze sed ma evifentne problem s tagy. Ja potrebuji takto porovnavat a oznacovat soubory, ktere maji jednu vetuna kazdem radku a kazda veta zacina < s > a konci < lomitko s>. Pdobne, jako mi zdejsi diskuse nepovoli ukoncovaci tag a musel jsem napsat slovy "lomitko" tak sed s tim ma taky problem:
    sed: -e expression #1, char 47: unknown option to `s'
    sed: -e expression #1, char 40: unknown option to `s'
    sed: -e expression #1, char 44: unknown option to `s'
    sed: -e expression #1, char 51: unknown option to `s'
    
    Jeda se vzdy o ukoncovaci tagy.

    Da se tohle nejak obejit?
    8.8.2012 22:10 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Proč neukážete i ten příkaz, který jste zkoušel? Takhle můžu jen hádat: tipuji problém s lomítkem, které bylo vyhodnoceno jako oddělovač, takže následující "s" sed chápal jako (neznámou) option. Je-li to tak, buď před to lomítko, které má být součástí vzorku, dejte backslash, nebo použijte jiný oddělovač, který nemáte ve vzorku ani v replacement textu.
    tomes.io avatar 8.8.2012 23:43 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Jaky prikaz mate na mysli? Spusteni skriptu? Ten povazuji za zrejmy:
    ]$ ./compare.sh file1.txt file2.txt
    sed: -e expression #1, char 84: unknown option to `s'
    sed: -e expression #1, char 28: unknown option to `s'
    sed: -e expression #1, char 74: unknown option to `s'
    
    Poukazuji na to, ze problem je v samotnych textovych souborech, ktere obsahuji tagy.

    Vypada to nejak takto:
    <s> veta </s>
    <s>druha veta </s>
    
    
    Soubory samotne modifikovat modifikovat nijak nemuzu, format vety uzavrenych mezi tagy musi zustat zachovan.

    tomes.io avatar 8.8.2012 23:44 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Snad by slo misto sed vyuzit awk.
    9.8.2012 06:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Jaky prikaz mate na mysli? Spusteni skriptu?

    Ne, pochopitelně příkaz sed, který vám tu chybu hlásí. Bez toho, abyste ukázal, s jakými parametry ho voláte, můžu jen hádat naslepo.

    9.8.2012 07:10 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Aha, on je to ten skript výše. Tak lomítko by ještě šlo ošetřit pomocí
      sed -e "s/^${line//\//\\/}$/\!&/"
    
    (stříška a dolar jsou nutné, aby to nenašlo i řádky, které obsahují řádek z prvního souboru jako podřetězec), ale stejně tam budou dělat problémy všechny ostatní konstrukce regulárních výrazů, např. tečka. Další chyba je v použití "read line", které odstraní počáteční a koncové mezery. A konečně se při upravování druhého souboru mění soubor, vůči kterému porovnáváme další řádky. Takže když už to dělat takhle, tak spíš
    #!/bin/bash
    
    matches1=`mktemp`
    matches2=`mktemp`
    
    i=1
    while read; do
        line="$REPLY"
    
         j=1
         while read; do
             if [ "$line" = "$REPLY" ]; then
                 echo $i >>"$matches1"
                 echo $j >>"$matches2"
             fi
             : $[j++]
         done <"$2"
    
        : $[i++]
    done <"$1"
    
    aux=`mktemp`
    prev=0
    exec 3<"$1"
    sort -n -u "$matches1" | while read next; do
        for ((i=prev; i<next; i++)); do
             read <&3
             echo "$REPLY" >>"$aux"
        done
        read <&3
        echo "!$REPLY" >>"$aux"
    done
    rm -f "$matches1"
    mv -f "$aux" "$1"
    
    aux=`mktemp`
    prev=0
    exec 3<"$2"
    sort -n -u "$matches2" | while read next; do
        for ((i=prev; i<next; i++)); do
             read <&3
             echo "$REPLY" >>"$aux"
        done
        read <&3
        echo "!$REPLY" >>"$aux"
    done
    rm -f "$matches2"
    mv -f "$aux" "$2"
    
    

    (píšu to z hlavy a nemám čas to zkoušet, takže tam asi budou nějaké chybičky)

    tomes.io avatar 13.8.2012 21:23 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    No nakonec to slo vyresit bez lomitek:
    sed -i "s#$line#!$line#g" "$input1" "$input2"
    A zda se, ze to dela co potrebuju.
    14.8.2012 00:13 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Jen dokud tam někde nebude křížek.
    14.8.2012 00:19 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru

    …nebo kterýkoli znak nebo kombinace znaků, které mají v regulárních výrazech speciální význam. A samozřejmě to bude matchovat i podřetězce.

    Gratuluji, podařilo se vám úspěšně ignorovat všechno, co jsem napsal ve svém příspěvku. Hlavně že jste si to označil jako řešení…

    tomes.io avatar 14.8.2012 13:46 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Tam budou jen normalni ceske vety uzavrene vyse zminenymi tagy. A prave ty tagy, resp. backslash delaly problemy. Krizky ani jine regularnevyrazove tam nebudou...

    ja dekuji za pomoc, ale moje reseni resi co ja potrebuji. nemusim osetrovat uplne vsechny pripady a moznosti. Pokud Vam to vadi, muzu se odznacit a jako reseni oznacit Vas prispevek... ja jen rikam, ze co jsem chtel, to jsem dostal..
    tomes.io avatar 14.8.2012 13:55 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    navic Vase reseni zavorek:
    sed -e "s/^${line//\//\\/}$/\!&/"
    nefunguje. Skript neudela nic, nic neoznaci.

    14.8.2012 14:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru

    Mně to funguje:

    mike@unicorn:~> line=x/y
    mike@unicorn:~> sed -e "s/^${line//\//\\/}$/\!&/" <<EOT
    ax/yb
    x/y
    xy
    EOT                                                                             
    ax/yb                                                                           
    !x/y                                                                            
    xy                                                                              
    
    3.8.2012 23:12 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Mám nejasné tušení, že hledáte příkaz comm (ale pozor, funguje jen na seřazené soubory).
    3.8.2012 20:53 Kit
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Opět mám tušení, že tady někdo vynalézá kolo, když si může z garáže vytáhnout auto. Když nám prozradíš, k čemu to potřebuješ, tak ti možná poradíme nějaký verzovací systém, který tvůj problém vyřeší komplexně.
    tomes.io avatar 3.8.2012 23:56 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Ja to dostal zkratka jako zadani ukolu pro skolni laborator... Rozkaz znel jasne: musi to byt bash script (verzovaci system tedy nepomuze) na porovnani textu (nejlepe schopny zpracovavat vice nez dva soubory zaraz) ktery bude nejak oznacovat vety/radky, ktere se neshoduji (vsechny texty jsem si uz predtim jinym skriptem upravil tak, aby 1 radka = 1 veta.
    4.8.2012 00:11 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Aha, takže domácí úkol. :-(
    tomes.io avatar 4.8.2012 00:34 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Dobrovolny ukol, nikoliv klasicky domaci. Koneckoncu jsou prazdniny, jenom ja blbec se chci neco porad ucit a delat ;) Proc ten smajlik, je na tom neco spatneho? Psal jsem, ze chci nakopnout, ne aby to za me nekdo vyresil (to bych se toho s takovou asi moc nenaucil, i kdyz jedna z cest jak se neco naucit je pry cist programy po druhych :)
    8.8.2012 15:44 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Automaticke porovnani a oznaceni odlisnosti v txt souboru
    Psal jsem, ze chci nakopnout
    V tom případě použij oblíbený vyhledávač a zadej "bash mapfile" - ale raději si ověř, že v zadání bylo bash skript.
    When your hammer is C++, everything begins to look like a thumb.

    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.