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í
×
    včera 17:55 | Zajímavý projekt

    Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.

    Ladislav Hagara | Komentářů: 4
    11.7. 16:44 | Komunita

    Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.

    Ladislav Hagara | Komentářů: 4
    11.7. 14:55 | Humor

    McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.

    Ladislav Hagara | Komentářů: 15
    11.7. 00:11 | Nová verze

    Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    10.7. 21:00 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 4
    10.7. 15:22 | Nová verze

    Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.

    Ladislav Hagara | Komentářů: 12
    10.7. 12:55 | Bezpečnostní upozornění

    Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].

    Ladislav Hagara | Komentářů: 16
    10.7. 11:55 | Humor

    Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂

    Ladislav Hagara | Komentářů: 16
    10.7. 02:11 | Nová verze

    Byla vydána nová major verze 8.0.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 oficiálním oznámení a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    10.7. 01:11 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.

    Ladislav Hagara | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (27%)
     (7%)
     (3%)
     (1%)
     (1%)
     (4%)
    Celkem 391 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: Spojení řádků označených čísly

    20.3.2010 12:15 Pan Mantinel
    Spojení řádků označených čísly
    Přečteno: 775×
    Zdravím, měl bych dotaz, vyfiltroval jsem si pomocí grepu řádky obsahující slova unfinished a resumed, výpis vypadá takto:
    28135: open("/etc/lib"map.conf3", O_RDONLY, (unfinished ...)
    28131: open("/etc/lib"map.conf12", O_RDONLY, (unfinished ...)
    28131: (... open resumed)) = 0
    28135: (... open resumed)) = -1 ENOENT (No such file or directory)
    
    A potřeboval bych řádky se stejným počátečním číslem spojit do jednoho, aby výstup vypadal takto:
    28135: open("/etc/lib"map.conf3", O_RDONLY, (unfinished ...)28135: (... open resumed)) = -1 ENOENT (No such file or directory)
    28131: open("/etc/lib"map.conf12", O_RDONLY, (unfinished ...)28131: (... open resumed)) = 0
    
    Tuším způsob, jak to třeba v awk udělat (začít u prvního řádku a porovnávat $1 s ostatními, když se najde shoda, vytisknout), ale vůbec mi nenapadá, jak to nakódit (s awk teprve začínám) a navíc mi tenhle způsob přijde neefektivní a náročný na čas.

    Odpovědi

    20.3.2010 12:44 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    Jestli se celý ten výstup vejde do paměti, tak bych to udělal v perlu:
    my %line_pairs;
    while (my $line = <>) {
        chomp $line;
        my @fields = split ':', $line;
        my $num = shift @fields;
        $line_pairs{$num} .= join ':', @fields;
    }
    
    for my $key (sort keys %line_pairs) {
        print $line_pairs{$key}, "\n";
    }
    
    Možná trošku špatně, psáno z hlavy, netestováno.
    20.3.2010 12:57 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    AWK řešení, také se text musí vejít do paměti. Testováno :-)
    {
    	i = $1
    	gsub(/:/, "", i)
    	lines[i] = lines[i] $0 " "
    }
    
    END {
    	for (i in lines) {
    		print lines[i]
    	}
    }
    
    kouby avatar 20.3.2010 13:14 kouby | skóre: 27 | blog: init | Praha
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    awk '{if($1 in a){print a[$1]""$0;delete a[$1];}a[$1]=$0}' vstup
    That's thirty minutes away. I'll be there in ten.
    20.3.2010 13:44 Pan Mantinel
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    Díky moc všem, už mi to trochu objasnilo, jak se vlastně s awk a perlem pracuje. Zatím mi na na první pohled na pochopení přijdou nejjednodušší obě řešení v awk, takže zkusím pořádně pochopit ty.
    20.3.2010 14:58 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    Jestli se každé číslo řádku objeví právě dvakrát, je koubyho řešení lepší. To moje lze každopádně zjednodušit na
    {
    	lines[$1] = lines[$1] $0 " "
    }
    
    END {
    	for (i in lines) {
    		print lines[i]
    	}
    }
    
    Předtím jsem totiž zapomněl, že pole v AWK mohou jako klíče používat libovolné řetězce.
    wamba avatar 20.3.2010 15:55 wamba | skóre: 38 | blog: wamba
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    jak se vlastně s awk a perlem pracuje.
    Chcete si to ozkoušet a pak si vybrat. Mně se třeba pracuje lépe s perlem (je univerzálnějším nástrojem než awk, ale uznávám, že může ze awk může vypadat přehledněji).

    Samozřejmě v perlu by to šlo taky napsat zkráceně

    perl -ane 'chomp ;$line{$F[0]} .= $_; END{print $_,"\n" foreach values(%line)}'
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    20.3.2010 16:32 deadmail
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    Vo vseobecnosti je najrychlejsie subor najprv utriedit a potom staci porovnavat za sebou iduce riadky. Staci si teda pamatat len rovnako zacinajuce riadky.

    sort subor | awk 'NR == 1 {last_id=$1;last=$0} NR > 1 {if ($1 == last_id) {last = last$0} else {print last; last=$0; last_id=$1}} END {print last}'

    Ak je subor vysledkom prikazu
    grep
    , tak uz asi utriedeny je ;-)
    25.3.2010 17:19 pluto
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    a ako by sa do takeho vyrazu dala zakomponovat podmienka nech to spaja len riadky v ktorych sa to unfinished ... a open resumed vyskytuje ?
    25.3.2010 20:48 deadmail
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    sort subor | awk 'NR == 1 {last_id=$1;last=$0} NR > 1 {if (($1 == last_id) && ($0 ~ "unfinished|open resumed")) {last = last$0} else {print last; last=$0; last_id=$1}} END {print last}'
    25.3.2010 22:56 Nonsens
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    ja len tak...funguje aspon jedna moznost? :DD
    26.3.2010 09:11 pluto
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    nie uplne ale myslim ze sa to z toho bude dat poskladat :D
    27.3.2010 13:35 Nonsens
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    a ktora moznost je asi taka najidealnejsia?
    27.3.2010 17:10 hizo
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    ja by som to tiez potreboval a v awk pracovat neviem. takze ak mam riadky: 3733 execve("/bin/ls", ["ls", "/etc/anacrontab", "/etc/blkid.tab", "/etc/crontab", "/etc/crypttab", "/etc/fstab", "/etc/mtab"], [/* 38 vars */] < unfinished ...>
    3733 <... execve resumed> ) = 0
    3735 execve("/bin/sed", ["sed", "-n", "1p"], [/* 38 vars */] < unfinished ...>
    3735 <... execve resumed> ) = 0
    mohol by sem niekto napisat riesenie v awk aby mi to spojilo riadky ktore si odpovedaju tymi zaciatocnymi cislami?dakujem
    27.3.2010 15:42 hizo
    Rozbalit Rozbalit vše Re: Spojení řádků označených čísly
    prosim vas a neda sa to spravit cisto sedmi a grepom??ze napriklad cely vypis suboru budem mat ulozeny v premennej a neda sa to par grepmi a sedmi pospajat??

    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.