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 02:44 | Nová verze

Byl vydán Sway ve verzi 0.14. Přehled opravených chyb, změn a novinek v nejnovější verzi tohoto dlaždicového (tiling) správce oken pro Wayland kompatibilního s i3 na GitHubu. Do vývoje se zapojilo 12 vývojářů [reddit].

Ladislav Hagara | Komentářů: 0
včera 22:33 | Nová verze

Byla vydána verze 4.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v poznámkách k vydání a v aktualizované dokumentaci. Ve dnech 15. až 17. listopadu proběhne v Praze konference vývojářů a uživatelů Suricaty SuriCon 2017.

Ladislav Hagara | Komentářů: 0
včera 17:11 | Nová verze

Byla vydána dvaadvacátá alfa verze svobodné historické realtimové strategie 0 A.D. (Wikipedie). Kódový název této nejnovější verze je Venustas. Představení novinek také na YouTube.

Ladislav Hagara | Komentářů: 3
včera 11:33 | Zajímavý článek

Radek Vokál v článku Boltron – náhled modulárního operačního systému (en) na MojeFedora.cz představuje a informuje o možnosti vyzkoušet si Boltron, prototyp modulární distribuce. Pro Fedoru 26 je k dispozici testovací docker kontejner, který obsahuje modifikovanou verzi správce balíčků DNF, který na pozadí pracuje s moduly.

Ladislav Hagara | Komentářů: 3
včera 07:00 | Nová verze

ZFS on Linux, tj. implementace OpenZFS (Wikipedie) na Linuxu, byl vydán ve verzi 0.7.0. Přehled novinek v diskusním listu zfs-announce nebo na GitHubu. Nejnovější ZFS on Linux je kompatibilní s Linuxem 2.6.32 až 4.12.

Ladislav Hagara | Komentářů: 0
včera 01:44 | IT novinky

V Las Vegas končí bezpečnostní konference Black Hat USA 2017 (Twitter) a začíná bezpečnostní konference DEF CON 25 (Twitter). V rámci Black Hat budou vyhlášeny výsledky letošní Pwnie Awards (Twitter). Pwnie Awards oceňují to nejlepší, ale i to nejhorší z IT bezpečnosti (bezpečnostní Oscar a Malina v jednom). V kategorii "Lamest Vendor Response" byl například nominován také Lennart Poettering za jeho přístup k řešení bezpečnostních chyb v systemd, viz například chyba s uživatelem 0day.

Ladislav Hagara | Komentářů: 4
včera 00:22 | Bezpečnostní upozornění

Nitay Artenstein z Exodus Intelligence se v příspěvku na blogu společnosti podrobně věnuje bezpečností chybě Broadpwn (CVE-2017-9417). Její analýzu provedl také Zhuowei Zhang na blogu Booster Ok. Jedná se o chybu ve firmwaru Wi-Fi chipsetů BCM43xx od Broadcomu. Útočník může vzdáleně získat kontrolu nad zařízením. Chyba byla již opravena v macOS, iOS i Androidu [Hacker News].

Ladislav Hagara | Komentářů: 3
26.7. 22:55 | IT novinky

Intel končí s vývojovými deskami Joule, Edison, Galileo a také s Arduino 101 a Curie.

Ladislav Hagara | Komentářů: 0
26.7. 14:44 | Nová verze

Byla vydána nová verze 42.3 linuxové distribuce openSUSE Leap. Jedná se už o třetí vydání, které staví na SUSE Linux Enterprise (SLE). Výchozím jádrem je opět poslední LTS verze, tedy řada 4.4. Podrobnosti v oznámení o vydání a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 16
26.7. 14:30 | Nová verze

Google Chrome 60 byl prohlášen za stabilní. Nejnovější stabilní verze 60.0.3112.78 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 40 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
Těžíte nějakou kryptoměnu?
 (5%)
 (2%)
 (20%)
 (74%)
Celkem 129 hlasů
 Komentářů: 8, poslední včera 21:30
    Rozcestník

    Dotaz: Čím najít duplikátní řádky?

    28.2.2016 13:56 Mirek
    Čím najít duplikátní řádky?
    Přečteno: 904×
    Rád bych nástroj k nalezení duplikátních řádků, který mi dá možnost vybrat duplikátní řádek ke smazání. Jako test soubor mám
    ! flora
    jetel
    len
    ! fauna
    jelen
    lev
    ! nebe
    letadlo jelen
    tupolev
    ! dalsi
    lentilka
    jelenice
    jitrnice
    jetel
    lev
    

    Řešení dotazu:


    Odpovědi

    28.2.2016 14:08 Kit | skóre: 38 | Brno
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    uniq seznam.txt
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    pavlix avatar 28.2.2016 23:35 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Obávám se, že uniq seznam.txt dá úplně stejný výsledek jako cat seznam.txt.
    29.2.2016 18:02 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    On ten uniq mi stejně nějak divně funguje, když dle tohohle příkladu.
    $ cat duplitest.txt 
    ! flora
    jetel
    len
    ! fauna
    jelen
    lev
    ! nebe
    letadlo jelen
    tupolev
    ! dalsi
    lentilka
    jelenice
    jitrnice
    jetel
    lev
    mi vypíše po
    $ uniq -c -w 3 duplitest.txt
          1 ! flora
          1 jetel
          1 len
          1 ! fauna
          1 jelen
          1 lev
          1 ! nebe
          1 letadlo jelen
          1 tupolev
          1 ! dalsi
          1 lentilka
          1 jelenice
          1 jitrnice
          1 jetel
          1 lev
    přitom by měl vypsat
    $ uniq -c -w 3 duplitest.txt
          2 jet
          2 len
          2 jel
          2 lev
    
    alespoň to tak chápu z toho externího příkladu.
    pavlix avatar 29.2.2016 22:39 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Chová se to přesně podle dokumentace.
    Fuky avatar 28.2.2016 14:23 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?

    Vzhledem k tomu, že to chceš dělat interaktivně, tak to lze udělat např. následovně. Uložíš si všechny duplicitní řádky do souboru duplicate.lines:

    $ sort input.txt |uniq -d >duplicate.lines

    V oblíbeném textovém editoru smažeš ze souboru duplicate.lines řádky, které nechceš odstranit:

    $ vim duplicate.lines

    Z původního vstupního souboru odfiltruješ všechny řádky, které jsou v souboru duplicate.lines a výstup uložíš do nového souboru new_input.txt:

    $ fgrep -vxf duplicate.lines input.txt >new_input.txt

    28.2.2016 14:34 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Nechci to nijak třídit, zapomněl jsem to uvést. Díky všem za nápady, zatím..
    Fuky avatar 28.2.2016 14:44 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Však ve výstupním souboru je zachováno stejné pořadí řádků jako ve vstupním souboru. Jen jsou v něm odstraněny řádky které chceš.
    28.2.2016 15:12 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?

    Našlo mi to řádky

    jetel
    lev

    ty jsem odstranil, protože jsem je nechtěl smazat dokud mi nedá výběr který duplikátní řádek se mi smaže, nechci smazat vždy jen první nebo vždy jen druhý, chci vědět který se smaže.

    Poslední krok mi vrátil původní soubor.

    Jendа avatar 28.2.2016 16:09 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Hm, to zní komplikovaně, a asi na to bude potřeba něco naprogramovat… Osobně bych to dělal tak, že bych v Pythonu načetl řádky do dictionary a u každého si pamatoval, kolikrát tam byl, pak bych soubor znova prošel a před každý řádek vypsal číslo z toho dictionary, pak bych to v textovém editoru promazal a pak bych odstranil první sloupec (cut -d " " -f 2-).
    29.2.2016 15:13 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Nu dobrá, tak využij získaný soubor duplicate.lines a ulož si do souboru remove.lines všechny řádky s duplicitami a prefixem, který charakteruzuje číslo řádku ve vstupním souboru.
    Co když budu mít soubor s tisíci řádky a navíc já se ty duplicity snažím mezi těmi tisíci najít, kdybch věděl které to jsou nepokládal bych zde dotaz. Vážím si ale tvé snahy, jen chybí uvažování jak moc to bude efektivní v souboru s těmi tisíci položkami. Chci říct, že na takový malý soubor je až příliš mnoho interakce ;-)
    29.2.2016 15:15 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    http://www.abclinuxu.cz/poradna/linux/show/414063#12
    Fuky avatar 28.2.2016 16:54 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?

    Nu dobrá, tak využij získaný soubor duplicate.lines a ulož si do souboru remove.lines všechny řádky s duplicitami a prefixem, který charakteruzuje číslo řádku ve vstupním souboru.

    $ fgrep -nxf duplicate.lines input.txt >remove.lines

    Pak si opět v oblíbeném textovém editoru smaž ze souboru remove.lines řádky, které nechceš odstranit a následně využij tento soubor pro smazání konkrétních řádků ze vstupního souboru:

    $ sed -e $(cut -f 1 -d ":" remove.list |sed -e 's/$/d;/' |tr -d "\n") input.txt >new_input.txt

    Soubor new_input.txt bude obsahovat výsledek.

    Josef Kufner avatar 28.2.2016 14:30 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Pokud chceš zachovat pořadí řádků, nahrej to do SQL databáze, přidej sloupec, který bude značit duplicity a pak můžeš interaktivně mazat libovolným GUI klientem.
    Hello world ! Segmentation fault (core dumped)
    28.2.2016 14:52 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    nahrej to do SQL databáze

    S datábazemi nemám zkušenosti, ale předpokládám, že mám k tomu použít LibreOffice Base a pak ale nevím co dál. Co bych měl hledat v nápovědě abych dosáhl toho co mi radíš.

    přidej sloupec, který bude značit duplicity
    Dobře nějak vytvořím sloupec ale jak porozumět, že má značit duplicity?
    Jendа avatar 28.2.2016 16:05 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Base by asi šlo použít, ale osobně bych k tomu použil SQLite nebo MySQL. K MySQL používám klikátor Adminer.

    Duplicity nevím jak označit, tohle by možná mohlo fungovat.
    28.2.2016 16:28 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Srandovní na tom je, že v PSPadu (freeware) pro Windows to jde na pár kroků i bez vytváření nějaké databáze, editor to najde s možností interakce bez vytváření nějakých dočasných souborů. On sice funguje i jakžtakž ve Wine ale mám problém s jeho výkonem, proto používám Bluefish ale zdaleka nemá funkčnost PSPadu včetně tohoto.
    Jendа avatar 28.2.2016 16:35 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Not my problem.

    V tom případě stačilo dát do Googlu "vim find duplicate lines" a kliknout na první odkaz.
    28.2.2016 16:55 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    A že jsi to neudělal dříve? Dobrá budu se muset naučit s Vimem když to jinak jednoduše nejde.
    28.2.2016 19:15 Jindřich Makovička | skóre: 13
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Frantové uživatelé tyhle věci zpravidla řeší v Excelu a spol...
    29.2.2016 15:42 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Taky řešení, ale pro moje účely moc komplikované a zdlouhavé na více položek. Díky ;-)
    Josef Kufner avatar 29.2.2016 00:46 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Na takový úkol je celkem jedno, která databáze to bude. Pointa je v tom, že si v jednom sloupečku uchová původní data a do dalšího si nechá spočítat, zda stejný řádek už tam je. A pokud použitá databáze nezachovává pořadí řádků, tak si tam přidá i číslo řádku.
    Hello world ! Segmentation fault (core dumped)
    pavlix avatar 28.2.2016 23:36 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Pokud chceš zachovat pořadí řádků, nahrej to do SQL databáze
    Pobavilo.
    wamba avatar 28.2.2016 17:10 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    můžeš si napsat script který ti vypíše text řádků a k nim indexy řádků, kde se nachází, pak vyfiltruješ ty, kde jsou 2 a více indexy, v Perlu 6 třeba takhle:
    perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say'
    
    :)
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    28.2.2016 17:50 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Budu muset teda počkat na verzi 6, mám jen 5, moc ale díky.
    28.2.2016 22:32 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    awk '{print a[$0]++":"$0}' file.txt | tac | awk -v FS=':' '{b[$2]=$1} a[$2]++{b[$2]++} b[$2]==0{b[$2]=""} b[$2]{b[$2]=">:"} {print b[$2]$2}' | tac | awk -v FS=':' '$1==">" && !a[$2]{a[$2]=">"++i">>"} {print $1a[$2]$2}'

    Je to trochu delší. Bez požadavku na číslování se dá odstranit poslední Awk.
    Řešení 1× (1john2)
    29.2.2016 10:57 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Ještě k tomu terminálové omalovátko (max deset barev):

    | sed 's#>>\([0-9]\)>>\(.*\)#"\\033[1m\\033[4\1m\2\\033[0m"#' | xargs -I {} printf "{}\\n"
    29.2.2016 15:23 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    WoW, to se mi moc líbí ;-) Pro mě solušn #1
    29.2.2016 15:49 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    I to bez těch barviček, ale to s tím perlem, mě přijde nepřehlednější, jinak se pokusím porozumět co ty řeťezce v těch vašich příkazech vlastně dělají;-)
    1.3.2016 16:20 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Tak jsem to zkoušel na svém .vimrc a koukam, že to havaruje na uvozovkách, které se tam vyskytují jako komentáře. Tož jsem to ještě opravil:

    | sed '/^>>[0-9]>>/{ s#>>#\\033[1m\\033[4# ; s#>>#m# ; s#$#\\033[0m#} ' | xargs -0 -I {} printf '%b' "{}"

    No, a ze sedu jsem vyházel ty proměnné \1 a \2, bez nich to bude rychlejší. Také printf jsem udělal blbuvzdornější, aby měl jardík klidné spaní.
    1.3.2016 18:46 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Příloha:
    Bohužel to havaruje i na tomto, kdežto ten perl funguje stále-
    1.3.2016 20:24 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    | xargs -d '\n' -I {} printf '%b' "{}\\n"
    2.3.2016 08:08 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Lepší, jen mi tam něco žere znaky dole a zůstane tam jen torzo "http". Mimochodem to >>XX>> značí pořadí duplikátů po vyčerpání barev nebo to bere i s těma barevnýma, předtím jsem myslel, že odkazuje na řádky. Je mi jasný, že až smažu barevný a provedu kontrolu znovu, místo >>XX>> budou zase jen barevný. Poslední věc bych si přál, jestli by mohl být soubor uvedený jako poslední argument nikoliv uprostřed těch několika přesměrovaných příkazů (aby to šlo použít v Bluefishi nebo i jako alias)?
    2.3.2016 10:32 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    žere znaky dole

    změň oddělovače IFS z : na jiné -- navrhuji ^X (CTRL-V CTRL-X)
    2.3.2016 10:40 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    jako poslední argument....aby...použít alias

    manuál bashe říká -- používejte raději "funkce" než aliasy, Pak můžeš použít parametr $1, který ti makro-procesor krásně expanduje tam kde žádáš
    2.3.2016 10:46 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    předtím jsem myslel, že odkazuje na řádky

    právě v tom je celé know-how mého řešení, že na řádky neodkazuje, což by bylo o něco jednodušší. Jedná se o pořadí duplicit, z čehož se nechají pak také lehce obarvit (jen prvních 9). Myslel jsem, že je to jasný od začátku.
    2.3.2016 11:33 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Dobrá nějak se s tím poperu.
    (jen prvních 9)
    Pokud těch prvních devět už nebude mít svůj duplikát, bude obarveno zase dalších devět, je to tak, zkrátka dokud nesmažu alespoň jeden duplikát?
    2.3.2016 12:46 RM
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    přesně tak
    wamba avatar 28.2.2016 23:16 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Perl 6 a Perl jsou dva různé jazyky. Perl 6 můžeš někde nainstalovat pomocí balíčku rakudo. Použil jsem ho jen proto, že v něm experimentuji a napadlo hezké řešení. Napsat to jde v spoustě věcí v Perlu např.
    perl -nE 'BEGIN{ my %line; }; chomp; push @{$line{$_}}, $.; END{ for (keys %line) { say $_ . q{: } . join q{, }, @{$line{$_}} if @{$line{$_}} > 1;}; };'
    
    ale nevypadá to, tak elegantně jak v Perlu 6 :)
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    29.2.2016 15:36 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Wow, tak tohle stejně efektivní ;-) Líbí se mě obě stejně takže dvě první místa ;-) Mohl bys dát i výstup toho perl6, jsem jenom zvedavý, i když tam třeba neuvidím barvy?
    wamba avatar 29.2.2016 16:11 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Input:
    perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say' <<EOF
    ! flora
    jetel
    len
    ! fauna
    jelen
    lev
    ! nebe
    letadlo jelen
    tupolev
    ! dalsi
    lentilka
    jelenice
    jitrnice
    jetel
    lev
    EOF
    
    Output:
    jetel => [1 13]
    lev => [5 14]
    
    Převádí se to do pole tak jsou řádky číslovány od 0. U Perlu 6 zatím drhne rychlost, ale tisíce by ještě měli být v pohodě.
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    29.2.2016 16:26 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Taky hezký, tamto je naprosto dostatečné a přehledné. Sice musím otvírat stejný soubor 2x ale to nic neubírá na efektivitě.
    pepe_ avatar 29.2.2016 23:25 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?

    To je nějaké divné ...

    pepe@PC-PEPE-LINUX:~$ perl -nE 'BEGIN{ my %line; }; chomp; push @{$line{$_}}, $.; END{ for (keys %line) { say $_ . q{: } . join q{, }, @{$line{$_}} if @{$line{$_}} > 1;}; };' < file.txt lev: 6, 15 jetel: 2, 14 pepe@PC-PEPE-LINUX:~$ perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say' < file.txt jetel => [1 13] lev => [5 14] pepe@PC-PEPE-LINUX:~$ cat file.txt ! flora jetel len ! fauna jelen lev ! nebe letadlo jelen tupolev ! dalsi lentilka jelenice jitrnice jetel lev
      Jakto že to označuje pokaždé něco jiného ?
    wamba avatar 1.3.2016 00:46 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Co se ti nezdá, že jednou je 2, 14 a podruhé 1, 13? To protože jednou to čísluje řádky od 1 a podruhé od 0. Jak už jsem psal, ten příklad v Perlu 6 přistupuje k tomu souboru jako k seznamu řádků a první index v seznamu je 0.
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    29.2.2016 16:14 Mirek
    Rozbalit Rozbalit vše Re: Čím najít duplikátní řádky?
    Navíc to lze použít jako externí filtr v Bluefishi.

    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.