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

    Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).

    |🇵🇸 | Komentářů: 0
    včera 03:33 | IT novinky

    Do prodeje jde tichá bezdrátová herní myš Logitech PRO X2 SUPERSTRIKE s analogovými spínači s haptickou odezvou (HITS, Haptic Inductive Trigger System). Cena je 4 459 Kč.

    Ladislav Hagara | Komentářů: 5
    7.2. 21:00 | Zajímavý projekt

    Microsoft na GitHubu zveřejnil zdrojový kód projektu LiteBox, jedná se o 'knihovní operační systém' (library OS) zaměřený na bezpečnost, využívající systémovou architekturu LVBS k ochraně jádra před útoky z uživatelského prostoru. LiteBox je napsán v Rustu a uvolněný pod licencí MIT. Projekt je teprve v rané fázi vývoje.

    NUKE GAZA! 🎆 | Komentářů: 1
    7.2. 16:11 | Zajímavý software

    BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    7.2. 16:00 | Humor

    Byl představen cross-assembler xa.sh, napsaný čistě v Bourne shell skriptu. Tento nástroj umožňuje zpracovávat assemblerový kód pro Intel 8080, přičemž je možné snadno přidat podporu i pro další architektury, například 6502 a 6809. Skript využívá pouze různé běžné unixové příkazy jako jsou awk, sed nebo printf. Skript si lze stáhnout z GitHubového repozitáře projektu.

    NUKE GAZA! 🎆 | Komentářů: 6
    6.2. 17:22 | IT novinky

    Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.

    NUKE GAZA! 🎆 | Komentářů: 18
    6.2. 16:44 | Komunita

    Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.

    NUKE GAZA! 🎆 | Komentářů: 10
    6.2. 13:33 | IT novinky

    Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.

    Ladislav Hagara | Komentářů: 4
    6.2. 11:22 | IT novinky

    Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po

    … více »
    Ladislav Hagara | Komentářů: 28
    6.2. 11:11 | Nová verze

    Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (26%)
     (3%)
     (4%)
     (2%)
     (12%)
     (29%)
    Celkem 813 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Perl - hledani slova na standardnim vystupu

    25.12.2008 15:44 Pheek | skóre: 24 | blog: io
    Perl - hledani slova na standardnim vystupu
    Přečteno: 405×
    Dobry den, ucim se programovat v PERLu a potreboval bych poradit, mam standartni vystup na obrazovku, tam text ktery vyjde z urciteho programu(scriptu) treba pokud pustim script ktery ma vystup na obrazovku "Ahoj, me jmeno je Roman." , chtel bych pomoci perlu tento vystup zachytit a projit a najit jeke je jmeno a po najiti jmena ukoncit prohledavani(dal neprohledavat), takze asi co nasleduje za slovem "je" a ulozit to do promenne tak abych stim mohl dal pracovat, treba ji vypsat. Dekuji moc za radu popripade vzorovej priklad.

    Odpovědi

    frEon avatar 25.12.2008 16:04 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu

    a s cim konkretne si nevis rady?

    vzorovy priklad
    echo "ahoj, me jmeno je Roman." | perl -e 'while (<>) { /je\s+(.*)\.?/; print $1; }'
    
    Talking about music is like dancing to architecture.
    25.12.2008 16:38 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    #!/usr/bin/perl -w $vstup=`test.sh` (v tom scriptu je echo "ahoj, me jmeno je Roman.") a potom si stim nevim rady,muzes mi prosim pomoci co dal napsat?
    25.12.2008 16:39 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    #!/usr/bin/perl -w 
    $vstup=`test.sh` (v tom scriptu je echo "ahoj, me jmeno je Roman.")
    a potom si stim nevim rady,muzes mi prosim pomoci co dal napsat?
    25.12.2008 16:52 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Takze se o to pokousim takto ale stale mi to nejak nejde :(
    #!/usr/bin/perl -w    
    
    while ( `test.sh` ne "je" ) 
    { 
        /je\s+(.*)\.?/; 
        print $1; 
    }
    
    25.12.2008 17:07 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Pletete dohromady shellové scripty a perl. V perlu shellová kontrukce $(nahrazení příkazu jeho výstupem) takto nefunguje.
    open(VYSTUP, "test.sh |") or die;
    
    #doplň levou otevírací závorku "<", s ní mi nešel komentář vložit :-(
    while(VYSTUP>) {
    	print;
    }
    
    close(VYSTUP);
    nebo rozepsaně:
    open(VYSTUP, "test.sh |") or die;
    
    #doplň levou otevírací závorku "<"
    while(my $vystup = VYSTUP>) {
    	print $vystup;
    }
    
    close(VYSTUP);
    25.12.2008 17:11 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Jeee tak tohle jsem vubec nepochopil, nemohl by jste mi to prosim ukazat na tom konkretnim prikladu at to pochopim? Moc prosim, dekuji.
    25.12.2008 17:20 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Jde mi o to ze pustim nejakej konkretni soubor a ten ma vystup na obrazovku a ja potrebuji prohledat to co vypise a najit konkretni slovo, to slovo je muze ruznit ale pred nim je porad to same , treba "je" a tak potrebuji najit tohle slovo a vytisknout ho. Jakmile najdu tohle slovo za "je" tak skoncit s hledanim!
    25.12.2008 17:25 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    #!/usr/bin/perl -w
    
    open(VYSTUP, "test.sh |") or die;
    
    while(my $vystup = VYSTUP>) {
    	if($vystup =~ /je\s(.*)\./o) {
    		print "$1\n";
    	}
    }
    
    close(VYSTUP);
    25.12.2008 17:30 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    uz jsme to trochu pochopil ale stale to nejde:
    ./test.pl line 5, near ">) "
    Execution of ./test.pl aborted due to compilation errors.
    
    Jeste se chci zeptat kde vemu tu promenou $1 kde je definovana?
    Luboš Doležel (Doli) avatar 25.12.2008 17:48 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    uz jsme to trochu pochopil ale stale to nejde:
    Psal, že je nutné doplnit tu levou <.
    Jeste se chci zeptat kde vemu tu promenou $1 kde je definovana?
    Bylo by vhodné se v Perlu naučit práci s regulárními výrazy. Je to obsah prvního podvýrazu.
    25.12.2008 17:53 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Slubuji ze nastuduji, potreboval byh ted dodelat tohle a nevim kde doplnit tu levou zavorku.
    frEon avatar 25.12.2008 18:06 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    precti si toto
    Talking about music is like dancing to architecture.
    25.12.2008 18:21 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    pochopil jsem tohle:
    #!/usr/bin/perl -w
    
    open(VYSTUP, "test.sh |") or die;          #nastavuji konkretni zdroj dat
    
    while(my $vystup = VYSTUP>) {              # sem bych doplnil misto "VYSTUP>" "<>" podle clanku jsem pochopil ze tam nemusi byt a bere se to jako standartni vstup      
    	if($vystup =~ /je\s(.*)\./o) {     # tady se to prhledava konkretni slovo a pokud se najde je tak vytiskne slovo za tim
    		print "$1\n";
    	}
    }
    
    close(VYSTUP);
    pokud jsem to spatne pochopil tak me proim opravte

    takze ted to mam takto:
    #!/usr/bin/perl -w
    
    open(VYSTUP, "mpt-status |") or die;   # je soubor co chci at se spusti "mpt-status" a ten neco vypise na obrazovku
    
    while( my $vystup = <> ) {
        if($vystup =~ /state\s(.*)\./o) {  # hledam slovo "state" a zajima me to co je za nim<
    	    print "$1\n";
        }
    }
    		
    close(VYSTUP);
    
    25.12.2008 18:24 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    doplnim jeste vystup z programu mpt-status
    ioc0 vol_id 0 type IM, 2 phy, 279 GB, state DEGRADED, flags ENABLED
    ioc0 phy 0 scsi_id 1 SEAGATE  ST3300007LC      0003, 279 GB, state ONLINE, flags NONE
    ioc0 phy 1 scsi_id 0 SEAGATE  ST3300007LC      0003, 279 GB, state MISSING, flags OUT_OF_SYNC
    
    jde mi o to abych nasel to co je za "state" a to vypsal a nebo ulozil do promenne a dal sni pracoval, jako if, then, else atd....
    25.12.2008 18:59 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    takze uz jsem to jak staks pochopil, laqboruji stim dal a testuji to na jednoduchem prikazu "w" vypise kdo je pripojeny na konzole a je tam v prvim radku slovo load a za nim average, a ja chci zjistit to co je za load, upravil jsem script takhle:
    #!/usr/bin/perl -w
    
    open(VYSTUP, "w |") or die;
    
    while( my $vystup = VYSTUP> ) {
        if($vystup =~ /load\s(.*)\./o) {
    	    print "$1\n";
        }
    }
    		
    close(VYSTUP);
    
    tohle nevypise vubec nic.
    25.12.2008 19:09 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    tohle nevypise vubec nic.
    protože \. v regulárním výrazu. Opravdu by bylo dobré si nejprve nastudovat základy.
    25.12.2008 20:52 Pheek | skóre: 24 | blog: io
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Snazim se to nastudovat a uz mi to i vypisuje ale vic nez potrebuji,
    DEGRADED, flags ENABLED
    ONLINE, flags NONE
    MISSING, flags OUT_OF_SYNC
    
    potreboval bych jen to co mam na prvnim radku za state a to je DEGRADED v opacnem pripade je to OPTIMAL a vic nic nechci, potreboval bych z tama odstranit i tu carku za slovem. TAhle vypada script ktery delam:
    #!/usr/bin/perl
    $STATE_CRITICAL = 2;
    $STATE_OK = 0;
    
    open(VYSTUP, "mpt-status |") or die;
    
    while( my $vystup = VYSTUP> ) {
        if($vystup =~ /state\s(.*)/) {
        print "$1\n";
        }
    }
    		
    close(VYSTUP);
     
    if ( "$1" ne "OPTIMAL" ){
    	    print "$1\n";
    	    exit $STATE_CRITICAL;
    }else{
    	    print "HW RAID OK - state $1";
    	    exit $STATE_OK;
    }
    
    Dal mi tu neni jasne stim vypisem promene $1 potreboval bych ji dal pouzivat a porovnat ji s necim a zase ji dal vypsat v textu.
    25.12.2008 21:18 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    pokud potřebuje vždy jen první řádek, pak není zapotřebí načítat celý výstup z programu
    open(ZPROG, "mpt-status |") or die;
    
    my $vstup = ZPROG>;
    
    my $nejakaPromenna="";
    if($vstup =~ /^(\w+),/) {
    	print "$1\n";
    	$nejakaPromenna=$1;
    }
    
    print "$nejakaPromenna\n";
    
    close(ZPROG);
    26.12.2008 14:27 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    ach jo. proc tam cpete to open?
    my $vstup = `mpt-status`;
    
    die 'nemuzu najit status' unless $vstup =~ /state [ ] ([A-Z]+)/xms;
    my $status = $1;
    
    if ($status eq 'OPTIMAL') {
        print "ok\n";
    }
    else {
        print "bububu\n";
    }
    
    
    In Ada the typical infinite loop would normally be terminated by detonation.
    26.12.2008 16:11 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    A proč ne? Použití funkce open pro získání výstupu z externího programu (když neuvažuji STDIN) je korektnější řešení. Navíc ukládání veškerého vstupu do paměti není dobré řešení z hlediska spotřeby paměti. Nehledě na to, že podle zadání nepotřebuji celý výstup z programu, ale pouze první řádek. Dále se ve vašem řešení ochuzujete v chybovém hlášení o proměnnou $!
    26.12.2008 18:09 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Použití funkce open pro získání výstupu z externího programu (když neuvažuji STDIN) je korektnější řešení.
    Neni to korektnejsi reseni. Je to uplne jine reseni uplne jineho problemu.
    Navíc ukládání veškerého vstupu do paměti není dobré řešení z hlediska spotřeby paměti.
    Spotrebu pameti radeji v Perlu nereste. Perl je dobry ve spouste veci, ale ne ve spotrebe pameti. (Navic, vzdyt ten program vyplivne asi tak ctyri radky.)
    Dále se ve vašem řešení ochuzujete v chybovém hlášení o proměnnou $!
    Protoze to hlaseni nema s tou promennou nic spolecnyho. Test je tam na to, zda se povedlo vyextrahovat pozadovane slovo, a ne zda proces skoncil uspesne. Pokud bych chtel testovat to druhe tak tam muzu dat neco jako die "mpt-status vratil hodnotu $?" if $? (pripadne se nimrat v jednotlivych bitech toho $? abych vytahl status, stav a signal). Ale ani zde nepouziju $!, jelikoz v tomto pripade je dost k nicemu.
    In Ada the typical infinite loop would normally be terminated by detonation.
    26.12.2008 21:39 Jan Šimák | skóre: 37 | Hradec Králové
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Test je tam na to, zda se povedlo vyextrahovat pozadovane slovo
    V tom případě je použití funkce die dost nešikovné. Jestliže víte co funkce die dělá, tak nechápu, proč kvůli neexistenci hledaného řetězce ukončujete celý script. Testování úspěchu externího programu je lepší řešit přes návratovou hodnotu, protože kde máte jistotu, že výstup neobsahoval jiné řetězce než ten, který jste hledal.
    (Navic, vzdyt ten program vyplivne asi tak ctyri radky.)
    Tento případ ano, ale jde o obecný přístup k podobným problémům. Zvyknout si na to, že prostě vše co mi přijde na vstup jednorázově uložím do proměnné (může jít o soubor délky několika MB) není podle mě dobrý a zbytečně zvyšuje paměťové požadavky scriptu bez ohledu na to, jak samotný perl hospodaří s pamětí.
    27.12.2008 13:44 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Petrl - hledani slova na standartnim vystupu
    Jestliže víte co funkce die dělá, tak nechápu, proč kvůli neexistenci hledaného řetězce ukončujete celý script.
    Protoze skript ma vyhledat dany retezec. Pokud retezec neexistuje, nevim, co by jeste mel skript delat.
    Testování úspěchu externího programu je lepší řešit přes návratovou hodnotu ...
    Vzdyt od toho je to $? ...
    ... protože kde máte jistotu, že výstup neobsahoval jiné řetězce než ten, který jste hledal
    ... nechapu jak souvisi s navratovou hodnotou. Pokud vystup obsahoval jiny retezec tak stejne nevim co s tim, takze skript ukoncuji, viz vyse.
    Tento případ ano ...
    Jsem rad ze souhlasite, jelikoz zde resime tento pripad ...
    ... ale jde o obecný přístup k podobným problémům.
    ... "obecny pristup k podobnym problemum" je blbost, vzdy resite konkretni problem. Navic, jestli je u Vas "podobny problem" to, ze se mi najednou nevejde retezec do pameti, tak potes.
    Zvyknout si na to, že prostě vše co mi přijde na vstup jednorázově uložím do proměnné ...
    Ja si na nic takoveho nezvykam ...
    ... (může jít o soubor délky několika MB) ...
    ... nekolik MB se mi stejne do pameti vejde, nicmene zde mame jen ty 4 radky ...
    ... zbytečně zvyšuje paměťové požadavky scriptu ...
    ... nejdriv to zmerte v profileru, pak se o tom muzeme bavit (muzete napriklad dojit i k tomu, ze Vase reseni neusetri nic, protoze data mohou stejne byt v nejakem bufferu -- asi i budou, nebo ze narok pameti na uchovani I/O objektu prebije ty ctyri radky) ...
    ... bez ohledu na to, jak samotný perl hospodaří s pamětí.
    ... zrovna zde byste ohled mel brat, pokud Vas zajimaji pametove naroky skriptu, protoze rezie perlu urcite nebude zanedbatelna.

    Zaverem: ja ten Vas postoj s pameti chapu, ale Vase metodika zachazeni s nim je naprosto chybna.
    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.