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 11:55 | Zajímavý software

    Společnost Avalonia UI oznámila, že pracuje na .NET MAUI pro Linux a webový prohlížeč. Vyzkoušet lze demo v prohlížeči. Když bude backend stabilní, bude vydán jako open source pod licencí MIT.

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

    Byl vydán Mozilla Firefox 145.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Ukončena byla podpora 32bitového Firefoxu pro Linux. Přidána byla podpora Matrosky. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 145 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Lidé.cz (Wikipedie) jsou zpět jako sociální síť s "ambicí stát se místem pro kultivované debaty a bezpečným online prostředím".

    Ladislav Hagara | Komentářů: 42
    včera 10:33 | Nová verze

    Byla vydána nová verze 4.4 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | IT novinky

    ASUS má v nabídce komplexní řešení pro vývoj a nasazení AI: kompaktní stolní AI superpočítač ASUS Ascent GX10 poháněný superčipem NVIDIA GB10 Grace Blackwell a platformou NVIDIA DGX Spark. S operačním systémem NVIDIA DGX založeném na Ubuntu.

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

    Desktopové prostredie Trinity Desktop vyšlo vo verzii R14.1.5. Je tu opravená chyba v tqt komponente spôsobujúca 100% vyťaženie cpu, dlaždice pre viac monitorov a nemenej dôležité su dizajnové zmeny v podobe ikon, pozadí atď. Pridaná bola podpora distribúcií Debian Trixie, Ubuntu Questing, RHEL 10 a OpenSUSE Leap 16.

    lukve | Komentářů: 8
    10.11. 22:11 | Nová verze

    Grafická aplikace Easy Effects (Flathub), původně PulseEffects, umožňující snadno povolovat a zakazovat různé audio efekty v aplikacích používajících multimediální server PipeWire, byla vydána ve verzi 8.0.0. Místo GTK 4 je nově postavená nad Qt, QML a Kirigami.

    Ladislav Hagara | Komentářů: 1
    10.11. 12:22 | Komunita

    Na YouTube lze zhlédnout Godot Engine – 2025 Showreel s ukázkami toho nejlepšího letos vytvořeného v multiplatformním open source herním enginu Godot.

    Ladislav Hagara | Komentářů: 0
    10.11. 10:00 | Humor

    Blíží se konec roku a tím i všemožná vyhlášení slov roku 2025. Dle Collins English Dictionary je slovem roku vibe coding, dle Dictionary.com je to 6-7, …

    Ladislav Hagara | Komentářů: 6
    10.11. 09:55 | IT novinky

    Cloudflare Radar: podíl Linuxu na desktopu dosáhl v listopadu 6,2 %.

    Ladislav Hagara | Komentářů: 4
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (47%)
     (18%)
     (17%)
     (22%)
     (15%)
     (22%)
     (15%)
     (16%)
    Celkem 344 hlasů
     Komentářů: 15, poslední 2.11. 08:25
    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: 800×
    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.