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

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 151. brněnský sraz, který proběhne v pátek 20. 4. od 18:00 hodin v restauraci Benjamin na Drobného 46.

Ladislav Hagara | Komentářů: 0
dnes 13:33 | Nová verze

Byla vydána verze 18.04.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
dnes 13:11 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.26 a beta verze 1.27 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
dnes 12:55 | Komunita

Dle plánu byla dnes vydána hra Rise of the Tomb Raider (Wikipedie) pro Linux. Koupit ji lze za 49,99 €.

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

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 254 bezpečnostních chyb. V Oracle Java SE je například opraveno 14 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 12 z nich. V Oracle MySQL je opraveno 33 bezpečnostních chyb. Vzdáleně zneužitelné bez autentizace jsou 2 z nich.

Ladislav Hagara | Komentářů: 3
včera 23:11 | Nová verze

Byla vydána verze 8.0 linuxové distribuce Trisquel GNU/Linux. Nejnovější verze Trisquel nese kódové jméno Flidas a bude podporována do roku 2021. Výchozím prostředím je nově MATE 1.12. Trisquel patří mezi svobodné distribuce doporučované Nadací pro svobodný software (FSF).

Ladislav Hagara | Komentářů: 0
včera 16:00 | Nová verze

Byla vydána nová verze 27.9.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání. Jedná se o poslední větší aktualizaci verze 27. Vývojáři se zaměří na novou verzi 28.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Nová verze

Google Chrome 66 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 66.0.3359.117 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 62 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
včera 06:00 | Nová verze

Byla vydána druhá RC verze nové řady 2.10 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP. Přehled novinek i s náhledy v oznámení o vydání.

Ladislav Hagara | Komentářů: 0
17.4. 23:39 | Pozvánky

Již tento čtvrtek (19. 4.) se v posluchárně 107 na Fakultě informačních technologií ČVUT v Praze Dejvicích odehraje večer s Turrisem, tentokrát zaměřený na nový modulární router MOX. Mluvit o něm budou Patrick Zandl a Ondřej Filip, ale bude i prostor pro dotazy a diskuzi s vývojáři. Akce začíná v 18:00 a plánovaný konec je v 19:45. Mapka, kde se nachází daná posluchárna, a možnost registrace je k dispozici na webu CZ.NIC.

Miška | Komentářů: 0
Používáte na serverech port knocking?
 (2%)
 (7%)
 (48%)
 (27%)
 (16%)
Celkem 322 hlasů
 Komentářů: 29, poslední 5.4. 12:25
    Rozcestník

    Dotaz: Mazání se soboru v Perlu

    11.11.2009 12:03 TAPSOFT
    Mazání se soboru v Perlu
    Přečteno: 348×
    Prosím o pomoc. V stat1.txt souboru mám třeba toto nick1 nick2 nick2 nick4 a já potřebuji pomocí příkazu smazat určitý nick x

    do souboru to zapisuji takto open(STATISTIKA, ">>stat1.txt"); print STATISTIKA "$nick\n"; close(STATISTIKA);

    Za pomoc moc děkuji

    Řešení dotazu:


    Odpovědi

    11.11.2009 12:40 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Zkusil bych příkaz grep (existuje i v Perlu).
    Překladač ti nikdy neřekne: "budeme kamarádi"
    11.11.2009 13:09 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    příkaz grep jsem v perlu sice našel,ale nikde jeho použítí jak vymazat určité dané slovo ze souboru
    11.11.2009 13:17 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Nezkoušel jsem, takže jen rychle od boku (netvrdím, že je to optimální způsob, grep by asi byl jednodušší):
    $file = "stat1.txt";
    $nick = "nick xx";
    
    open (FILE, "<$file") or die "Can't open $file: $!\n";
    @lines = <FILE>;
    close FILE;
    
    open (STDOUT, ">$file") or die "Can't open $file: $!\n";
    
    foreach $line ( @lines ) {
        print $line unless /$nick/;
    }
    close STDOUT;
    
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    11.11.2009 13:49 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    děkuji ti moc,jdu hned zkusit
    11.11.2009 14:07 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    tak tohle nefunguje
    11.11.2009 14:48 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu

    Tu to maaas:

    use strict;

    my $file = "aaa"; # zazov suboru
    my $nick = "nick xx"; # nick na vymazanie

    my @lines;

    open (FILE, "<$file") or die "Can't open $file: $!\n";
    while(<FILE>) { push @lines,$_; }
    close FILE;

    open (STDOUT, ">$file") or die "Can't open $file: $!\n";

    for my $line ( @lines ) {
    print STDOUT $line unless($line =~ /$nick/);
    }
    close STDOUT;

    11.11.2009 15:31 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Blok while(<FILE>) { push @lines,$_; } se dá nahradit kratším @lines=<FILE>;
    Překladač ti nikdy neřekne: "budeme kamarádi"
    11.11.2009 15:08 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Jak "nefunguje"? Píše to něco? Nefunguje to jak sis představoval? Co to dělá? Křišťálovou kouli nemám...
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    11.11.2009 15:37 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    No ale tu koli nema ani on :-D

    btw. tvoj kod je v podstate cely spravne :-) Su tam 'len' 2 chyby na jednom riadku:
    print $line unless /$nick/;
    spravne to mas mat:
    print STDOUT $line unless($line =~ /$nick/);
    11.11.2009 15:48 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    No já chápu, že tazatel je asi (co se týče PERLu) mimo, ale napsat "nefunguje to" je fakt luxusní odpověď. :-)

    btw. Ten kod je v podstate správně až na tu podmínku - někde mi to uteklo při editaci a zbyl mi tam jen "pahýl" ... nicméně ještě tam musí být (alespoň podle té struktury stat1.txt dle tazatele) ten $nick "orámovaný", aby to nebralo násobné výskyty řetězce nebo části jiných (nick 1 vs. nick 10, nick 11 atd.)

    PS: Nehledě na to, že to celé jde napsat ještě PERLověji :-D
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    11.11.2009 17:18 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    nejsem mimo,ale tohle je jen holý mazání,musím to vložit do robota o 4500 řádkách a ještě nastavit proměnné a příkazy které to mažou,takže to trvá trochu déle než ti vyzkouším
    11.11.2009 15:48 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Předtím to nick neodebralo,ale ted to odebere a je to super,jsi fakt machr,děkuji moc
    11.11.2009 16:10 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    No machr rozhodně ne, ten by ti to napsal jako one-liner :-D :-D :-D :-D
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    11.11.2009 17:20 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    ale jo jde ti to,no to víš kdo umí,ten umí
    11.11.2009 19:19 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    ještě jeden dotaz,co když je ale v té složce nick = Jsi na blacklistu-důvod.... nick2 = Jsi na blacklistu-důvod.... a já tím pádem potřebuji vymazat celý řádek kterýbych ale hledal podle nick
    11.11.2009 20:15 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    v tom prípade použi výraz m/^$nick\b ... \b = zero length word boundary, t.j. za $nick môže byť koniec riadku alebo ľubovoľný znak iný ako alfanumberický
    11.11.2009 21:20 TAPSOFT
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    super,děkuji
    Řešení 1× (sdsdsd)
    11.11.2009 15:41 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    OK. Je tam jedna chyba -> regexp u unless má být správně unless ($line =~ /^$nick$/) jinak by to bralo pro nick1 i řádky nick10, nick11 atd. Takže správně takto:
    #!/usr/bin/perl
    
    $file = "stat1.txt";
    $nick = "nick 1";
    
    open (FILE, "<$file") or die "Can't open $file: $!\n";
    @lines = <FILE>;
    close FILE;
    
    open (STDOUT, ">$file") or die "Can't open $file: $!\n";
    
    foreach $line ( @lines ) {
        print $line unless ($line =~ /^$nick$/);
    }
    close STDOUT;
    
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    11.11.2009 15:48 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    ak už dávaš celý súbor do pamäti, prečo nepoužiješ grep ?
    $file = "stat1.txt";
    $nick = "nick 1";
    
    open (INFILE, "<$file") or die "Can't open $file: $!\n";
    open (OUTFILE, ">$file.new") or die "Can't open $file.new: $!\n";
    
    print OUTFILE grep $line !~ /^$nick$/, <INFILE>;
    
    close INFILE;
    close OUTFILE;
    
    unlink "$file";
    rename "$file.new", "$file";
    
    11.11.2009 16:09 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    no pokial sa hrame na zvrhlosti typu kto da najmansi kod, tak potom :-):
    $file = "stat1.txt";
    $nick = "nick 1";
    
    open(STDOUT, ">${file}.part");
    open(STDIN, "<$file");
    
    print for grep !/^$nick$/, <>;
    rename("${file}.part",$file);
    
    11.11.2009 16:33 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Případně ten stat1.txt flákneme jako argument toho skriptu a o zabackupovaný původní file ať se stará někdo jiný :-D :-D
    #!/usr/bin/perl
    $^I = "~";
    $nick = "nick 6";
    while (<>) {
    	print unless /^$nick$/;
    }
    
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    12.11.2009 14:14 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu

    To pak staci i

    #!/usr/bin/perl
    $nick = "nick 6";
    print grep {!/^$nick$/} <>;
    12.11.2009 14:51 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Tak mě napadá ... nešel by ten nick hodit jako druhý parametr? :-)
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    12.11.2009 15:21 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    takto ? :-D #!/usr/bin/perl -n BEGIN { $nick = pop }; /^$nick\b/ || print;
    12.11.2009 15:23 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    oops, <code> miesto <pre> :-(
    12.11.2009 15:40 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Joooooooooo! Já věděl že to jde :-D :-D Smekám! Miluju PERL ... akorát ho furt používám tak nePERLovsky, až se stydím :-(
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    12.11.2009 17:27 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu

    A co takhle?

    perl -e '$n=pop;print grep{!/^$n\b/}<>' data.txt nick6
    12.11.2009 00:03 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    Pokud ten nick cpete do regexpu tak by to chtělo \Q, \E a /o.
    In Ada the typical infinite loop would normally be terminated by detonation.
    12.11.2009 08:49 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Mazání se soboru v Perlu
    alebo staci pouzit funkciu quotemeta

    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.