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:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 0
    dnes 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 0
    včera 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

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

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    včera 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    5.11. 19:53 | Bezpečnostní upozornění
    V Xenu objevena zranitelnost. Chyba v mechanismu grant copy umožňuje škodlivému virtuálnímu stroji číst a přepisovat libovolnou paměť jiných VM včetně privilegované domény Dom0. Dotčené verze jsou Xen 4.6 a novější. V upstreamu jsou dostupné patche pro Xen 4.17 až 4.19 a vývojovou větev. Pro starší nepodporované verze 4.6–4.16 nejsou v XSA-523 přiloženy opravy.
    vencour | Komentářů: 1
    5.11. 16:55 | Nová verze

    Multimediální přehrávač mpv byl vydán ve verzi 0.42.0. Jde o větší balík změn po bezmála roce. Mimo jiné se lépe integruje s Waylandem nebo rozšiřuje podporu DVD/Blu-ray, např. umožňuje přehrávat rovnou obrazy médií (soubory iso).

    ʚĭɞ 🍉 | Komentářů: 0
    5.11. 12:22 | Nová verze

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.

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

    Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2992 hlasů
     Komentářů: 35, poslední včera 23:27
    Rozcestník

    Dotaz: Perl - funkce smazat řádek ze souboru

    Indiánský lotr avatar 13.10.2010 10:23 Indiánský lotr | skóre: 25 | blog: ucim_sa
    Perl - funkce smazat řádek ze souboru
    Přečteno: 938×

    Ahoj, snažím se udělat si skriptík na náhodný výběr vtipu ze souboru vtipy.txt, vybraný vtip se vypíše a poté uloží do vtipy2.txt. Ovšem nevím dál jak zavolat a použít funkci "tr" či "sed" tak, aby vybraný vtip z původního vtipy.txt smazal. Buď se může zavolat přímo smazání řádku podle nahodne_cislo, nebo vyhledat řetězec $vtip a smazat pomoci něj.

    #!/usr/bin/perl
      use strict;
      use warnings;
      my $rozsah = `wc -l vtipy.txt | sed -n 's/[^0-9 ]//gp'`;
      my $nahodne_cislo;
    
      do
      {
        $nahodne_cislo = int(rand($rozsah));
      } until ($nahodne_cislo != 0);
    
    
      my $vtip = `cat vtipy.txt |  head -n $nahodne_cislo | tail -n 1`;
    
      my $file = 'vtipy2.txt';
      open(vti2, ">>$file");
      print vti2 "$vtip";
      close(vti2);
    
      print "$vtip";
      print "Celkovy rozsah vtipu - (test): $rozsah";
      #system("`cat vtipy.txt | sed -i '/$vtip/d' > vtipy3.txt`");
      my @args = ( "bash", "-c", "cat vtipy.txt | sed -i '/$vtip/d' > vtipy3.txt" );
      system(@args);
    

    Odpovědi

    13.10.2010 11:39 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    ``, wc, sed ???
    skus toto
    my @vtipy = <vtipy.txt>;
    my $nahodne_cislo = int rand scalar @vtipy
    my ($vtip) = splice @vtipy, $nahodne_cislo, 1;
    
    open VTIPY, '>', 'vtipy.txt' or die "vtipy.txt: $!\n"
    open VTIPY2, '>', 'vtipy2.txt' or die "vtipy2.txt: $!\n"
    
    print VTIPY2 $vtip;
    print VTIPY @vtipy;
    
    close VTIPY;
    close VTIPY2;
    
    13.10.2010 12:39 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    hh... 3 systemove volania pri 15 riadkovom Perl skripte :-)

    riesenie je zhruba take ako ti uz ukazal happy barney a v plne funkcnej podobe vyzera takto:
    #!/usr/bin/perl
    use strict;
    use warnings;
    
    open FH, "vtipy.txt" or die "Cannot open file";
    my @vtipy = <FH>;
    close FH;
    
    my $nahodne_cislo = int(rand($#vtipy));
    my $vtip = splice(@vtipy,$nahodne_cislo,1);
    
    print "Vyberam vtip cislo: ".($nahodne_cislo+1)."\n";
    print "Vtip: $vtip";
    
    open(FH, ">vtipy2.txt") or die "Cannot open file";
    print FH $vtip;
    close(FH);
    
    open(FH, ">vtipy.txt") or die "Cannot open file";
    print FH @vtipy;
    close(FH);
    
    
    13.10.2010 12:49 zulu
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    ...
    Indiánský lotr avatar 13.10.2010 13:17 Indiánský lotr | skóre: 25 | blog: ucim_sa
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    Pravda mohl sem to hodit do bashe :-) jj dobre napsane, mam se co ucit,..
    13.10.2010 17:56 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    To ne, to by bylo moc jednoduché :)
    l=$(wc -l < vtipy.txt)
    l=$(($RANDOM % $l))
    sed -n -e "$l p" vtipy.txt >> vtipy2.txt
    sed -i "$l d" vtipy.txt
    pek avatar 20.10.2010 16:23 pek | skóre: 20
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    A co třeba použít fortune  :^)
    13.10.2010 14:18 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    rozdiel "scalar @" a "$#" je, ze v tvojom pripade sa nikdy nevyberie posledny prvok :-)
    13.10.2010 19:54 NeoV_anon
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    Jojo... som si to potom vsimol... :) cakal som presne opacne chovanie rand-u :-)
    13.10.2010 19:59 NeoV_anon
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    resp. ani nie randu... ale miesto int (ktory iba osekava desatinu cast) staci pouzit ceil (ktory uz robi spravne zaokruhlovanie :-) )
    20.10.2010 21:36 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Perl - funkce smazat řádek ze souboru
    jen si dovolím připomenout pár vymožeností moderní doby

    open VTIPY -> open my $vtipy

    or die... -> use autodie
    In Ada the typical infinite loop would normally be terminated by detonation.

    Založit nové vlákno • Nahoru

    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.