abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 21:33 | Komunita

    Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.

    Ladislav Hagara | Komentářů: 1
    včera 21:11 | IT novinky

    Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.

    Ladislav Hagara | Komentářů: 0
    včera 17:55 | Nová verze

    AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | IT novinky

    Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Zajímavý článek

    Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.

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

    Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.10.38 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ářů: 5
    včera 00:22 | Komunita

    Google zveřejnil seznam 1220 projektů od 195 organizací (Debian, GNU, openSUSE, Linux Foundation, Haiku, Python, …) přijatých do letošního, již dvacátého, Google Summer of Code.

    Ladislav Hagara | Komentářů: 2
    5.5. 22:22 | IT novinky

    Na základě DMCA požadavku bylo na konci dubna z GitHubu odstraněno 8535 repozitářů se zdrojovými kódy open source emulátoru přenosné herní konzole Nintendo Switch yuzu.

    Ladislav Hagara | Komentářů: 7
    5.5. 00:33 | Nová verze

    Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.1.0. Po devíti letech od vydání předchozí verze 3.0.5. Doména dillo.org již nepatří vývojářům Dilla.

    Ladislav Hagara | Komentářů: 0
    4.5. 15:00 | Komunita

    O víkendu probíhá v Bostonu, a také virtuálně, konference LibrePlanet 2024 organizovaná nadací Free Software Foundation (FSF).

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (15%)
     (14%)
    Celkem 119 hlasů
     Komentářů: 8, poslední 4.5. 08:25
    Rozcestník

    Dotaz: Bash - smazání řádku, pokud k němu neexistuje podobný řádek

    27.3.2014 22:43 Jirka696
    Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    Přečteno: 312×
    Zdravím vás,

    chtěl bych se zeptat, zda v bashi existuje nějaký příkaz, nejspíše sed, který mi smazal řádek pod podmínkou, že existuje ještě jeden určitý řádek.

    Uvedu na příkladu.
    ABCDE ---- 1 text
    BFLMA ---- 1 text
    XYZ   ---- 2 text
    ATD   ---- 1 text
    Chci, aby to vždy porovnalo 1 text a našlo k sobě "partnera" 2 text. Pokud by nenašlo, tak by to řádek smazalo.

    Výsledek by tedy vypadal takto:
    ABCDE ---- 1 text
    XYZ   ---- 2 text
    Děkuji za rady

    Odpovědi

    27.3.2014 23:33 mhepp
    Rozbalit Rozbalit vše Re: Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    Hmmm... Asi nerozumim Tvemu zadani.

    Takze mam soubor, ktery prochazim. A pokud najdu vyskyt radku, ktery obsahuje "1 text", tak ho vypisu a vyhledam radek, ktery obsahuje "2 text", ten vpisu a koncim.

    Co mam delat v pripadech, ze "1 text" nenaleznu? Nebo pokud je "2 text" pred "1 text"?

    Jedno reseni by mohlo byt:

    grep -c 1 "1 text" soubor && grep -c 1 "2 text" soubor

    nebo

    awk 'BEGIN{nalezen=0} /1 text/{pom=$0; nalezen=1} /2 text/{if (nalezen==1) {print pom; print $0;}}' soubor

    Pokud Ti nevyhovuje toto reseni, specifikuj lepe zadani.
    28.3.2014 00:26 Jirka696
    Rozbalit Rozbalit vše Re: Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    no to mi nějak nefugnuje zkusim to ještě upřesnit

    mam např
    Hráč Tereza - B vojak20
    Hráč Honza - A vojak
    Hráč Jirka - A vojak3
    Hráč Karel - A vojak2
    Hráč Jméno - A vojak7
    Hráč Jméno - B vojak3
    Hráč Franta - B vojak 
    Hráč Eliška - A vojak
    a já potřebuju vybrat jen ty hráče, kteří mají k sobě druhou dvojici dvojice je dána tím, že k "A vojak" patří "B vojak", tedy písmeny A a B a poté stejným stringem

    čili potřebuju udělat např to, že pro "A vojak", potřebuju najít "B vojak" , pokud nenajdu žádnou B dvojici, tak chci všechny řádky s "A vojak" smazat obdobně pro další, pro "A vojak3" chci najít "B vojak3"

    výstup tedy bude
    Hráč Honza - A vojak
    Hráč Jirka - A vojak3
    Hráč Jméno - B vojak3
    Hráč Franta - B vojak
    
    28.3.2014 01:19 mhepp
    Rozbalit Rozbalit vše Re: Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    Nastinene reseni samozrejme nebude fungovat... Takhle je tu dobre doplnene zadani, tak se na to muzeme podivat.

    Tak si treba vybereme vsechny unikatni vojaky (jedno, jestli A nebo B) a podivame se, jestli existuje pro daneho vojaka A-B par. Ulozime si prvni vyskyt A vojaka i B vojaka, a pokud mame na konci oba dva, tak je vypiseme:
    cat soubor | awk '{print $NF} '  | sort | uniq | while read i; do
        awk 'BEGIN{na=0; nb=0} END{ if(na * nb == 1){print ra; print rb} /A '$i'$/{ if (na==0){ ra=$0; na=1} } /B '$i'$/{ if(nb==0){rb=$0; nb=1} }' soubor
    done
    
    Skript funguje pouze v pripade, ze na konci radku nejsou prebytecne mezery a zaroven, ze neni platny nasledujici pripad:
    ...
    Hrac K - A vojak
    ...
    Hrac L - B vojak
    ...
    Hrac M - A vojak
    ...
    Hrac N - B vojak
    ...
    
    Mysleno tim, ze existuje vice paru se stejnym vojakem.
    28.3.2014 01:57 mhepp
    Rozbalit Rozbalit vše Re: Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    Příloha:
    A jeste jedno reseni, ciste pomoci awk...

    Skript v priloze pustime takhle:
    cat soubor | awk -f awk_reseni.awk
    
    Tento skript zvladne prebytecne mezery, ale zase bere jen prvni vyskyt paru.
    2.4.2014 23:22 mhepp | skóre: 22
    Rozbalit Rozbalit vše Re: Bash - smazání řádku, pokud k němu neexistuje podobný řádek
    Takové mám nejradši... Ani nenapíšou, jestli to funguje... :(

    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.