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:00 | Zajímavý článek

    Jiří Eischmann se v příspěvku Fiasko jménem W Social na svém blogu věnuje evropské sociální síti W: "W Social je příkladem toho, že se problémy sociální sítí nedají řešit od exekutivního stolu. Když na začátku tohoto roku v Davosu oznámili vznik nové sociální sítě W Social, politici se mohli přetrhnout ve chvalozpěvech. Konečně evropská sociální síť a ještě s ověřením identity. … Jak se ukázalo, když v Davosu W Social oznamovali, neměli kromě

    … více »
    Ladislav Hagara | Komentářů: 2
    včera 18:00 | Bezpečnostní upozornění

    Výrobce hardwarových kryptoměnových peněženek Trezor upozorňuje na bezpečnostní incident u společnosti Brevo, kterou využívá k odesílání newsletterů. Útočník na e-mailové adresy odeslal phishingový e-mail.

    Ladislav Hagara | Komentářů: 0
    včera 14:33 | Komunita

    Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za srpen 2026. Aplikace XApp mají vlastní webovou stránku xapp-project.org. Představena byl čtečka EPUB s názvem Xepub a kalendář Clockenstein.

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

    Byla vydána nová verze 3.2.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

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

    Bylo vydáno Ubuntu 24.04.5 LTS, tj. páté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Komunita

    Švýcarsko testuje přechod z Microsoft 365 na FOSS, konkrétně balík openDesk (Wikipedie) od německé státní společnosti ZenDiS (Wikipedie), s cílem posílit digitální suverenitu.

    Ladislav Hagara | Komentářů: 9
    včera 04:22 | Komunita

    V italském městě Pordenone probíhá LibreOffice Conference 2026. Zúčastnit se lze i online.

    Ladislav Hagara | Komentářů: 0
    10.9. 18:33 | Nová verze

    Svobodný (GPLv3) šachový engine Stockfish (Wikipedie) byl vydán ve verzi 19 (𝕏). Přehled novinek v příspěvku na blogu. Stockfish 19 je o 44 Elo silnější než Stockfish 18.

    Ladislav Hagara | Komentářů: 0
    10.9. 12:33 | Nová verze

    Byla vydána nová verze 1.13.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.

    Ladislav Hagara | Komentářů: 0
    10.9. 11:11 | Pozvánky

    Organizátoři konference LinuxDays zveřejnili program letošního ročníku a spustili registraci návštěvníků. LinuxDays 2026 se uskuteční 3. a 4. října v areálu ČVUT v pražských Dejvicích, na Fakultě informačních technologií. Těšit se můžete na 70 přednášek a workshopů od 66 přednášejících. Konference bude rozdělena do pěti sálů s různou kapacitou. Vstup na LinuxDays je jako obvykle zdarma, stačí včas vyplnit registrační formulář. Opět je možné si na akci zakoupit oběd, ale je třeba to udělat předem, na místě už to nebude možné.

    Petr Krčmář | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (4%)
     (21%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2648 hlasů
     Komentářů: 31, poslední 13.8. 00: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: 851×

    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á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.