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 06:00 | Komunita

V Praze na půdě Elektrotechnické fakulty ČVUT dnes probíhá RT-Summit 2017 – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt. Přednášky lze sledovat online na YouTube.

Ladislav Hagara | Komentářů: 0
včera 14:33 | Zajímavý projekt

Blender Animation Studio zveřejnilo první epizodu z připravovaného animovaného seriálu The Daily Dweebs o domácím mazlíčkovi jménem Dixey. Ke zhlédnutí také ve 3D s rozlišením 8K.

Ladislav Hagara | Komentářů: 0
včera 12:34 | Komunita

Aktualizovanou počítačovou hru Warhammer 40,000: Dawn of War III v ceně 39,99 eur běžící také na Linuxu lze o víkendu na Steamu hrát zdarma a případně ještě v pondělí koupit s 50% slevou. Do soboty 19:00 lze na Humble Bundle získat zdarma Steam klíč k počítačové hře Sid Meier's Civilization® III v ceně 4,99 eur běžící také ve Wine.

Ladislav Hagara | Komentářů: 0
včera 00:22 | Nasazení Linuxu

Společnost Samsung oznámila, že skrze dokovací stanici DeX a aplikaci Linux on Galaxy bude možno na Samsung Galaxy S8 a S8+ a Galaxy Note 8 provozovat Linux. Distribuce nebyly blíže upřesněny.

Phantom Alien | Komentářů: 10
19.10. 23:55 | Komunita

Společnost Purism na svém blogu oznámila, že její notebooky Librem jsou nově dodávány se zrušeným (neutralized and disabled) Intel Management Engine (ME). Aktualizací corebootu na již prodaných noteboocích lze Management Engine také zrušit. Více v podrobném článku.

Ladislav Hagara | Komentářů: 0
19.10. 21:44 | Nová verze

Organizace Apache Software Foundation (ASF) na svém blogu slaví páté výročí kancelářského balíku Apache OpenOffice jako jejího Top-Level projektu. Při této příležitosti byl vydán Apache OpenOffice 4.1.4 (AOO 4.1.4). Podrobnosti v poznámkách k vydání. Dlouhé čekání na novou verzi tak skončilo.

Ladislav Hagara | Komentářů: 6
19.10. 19:22 | Pozvánky

Již příští týden - 26. a 27. října se v Praze v hotelu Olšanka odehraje OpenWRT Summit. Na webu konference naleznete program a možnost zakoupení lístků - ty stojí 55 dolarů. Čtvrtek bude přednáškový a v pátek se budou odehrávat převážně workshopy a meetingy.

Miška | Komentářů: 1
19.10. 13:44 | Nová verze

Bylo vydáno Ubuntu 17.10 s kódovým názvem Artful Aardvark. Ke stažení jsou Ubuntu Desktop a Server, Ubuntu Cloud Images, Ubuntu Netboot, Kubuntu, Lubuntu a Lubuntu Alternate, Lubuntu Next, Ubuntu Budgie, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio a Xubuntu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 22
19.10. 13:00 | Komunita

MojeFedora.cz informuje, že Fedora 27 dostane podporu pro AAC. Podpora multimediálních formátů je ve výchozí instalaci Fedory tradičně limitovaná kvůli softwarovým patentům, ale desktopový tým Red Hatu se ji i tak snaží v poslední době co nejvíce rozšířit. Už nějaký čas obsahuje kodeky pro MP3, H.264, AC3 a nyní byl přidán také kodek pro další velmi rozšířený zvukový formát – AAC.

Ladislav Hagara | Komentářů: 2
18.10. 23:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 145. brněnský sraz, který proběhne v pátek 20. října od 18:00 hodin v restauraci Time Out na adrese Novoměstská 2 v Řečkovicích. Jedná se o poslední sraz před konferencí OpenAlt 2017, jež proběhne o víkendu 4. a 5. listopadu 2017 na FIT VUT v Brně. Běží registrace účastníků.

Ladislav Hagara | Komentářů: 0
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (10%)
 (1%)
 (1%)
 (1%)
 (75%)
 (12%)
Celkem 146 hlasů
 Komentářů: 7, poslední 19.10. 23:06
    Rozcestník

    Dotaz: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1

    22.8. 12:18 thesan
    linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Přečteno: 346×
    Příloha:
    Linux, Bash. Mám dva textové soubory - S1 a S2, které obsahují několik sloupců s písmeny a čísly, formát viz příloha. S2 obsahuje výběr řádků z S1 podle předem daného kritéria. Potřebuji provést operaci porovnání a změny číselné hodnoty v konkrétním sloupci. Tedy, pokud bude souhlasit řádek z S2 s řádkem v S1, resp. čísla ve sloupcích 23-26 budou totožná, tak přímo v souboru S1 se změní číslo z 1.00 na 2.00 ve sloupci 55-60. Změna hodnoty pomocí regulárního výrazu je jasná, ale nevím jak provést porovnání.


    Řešení dotazu:


    Odpovědi

    Řešení 1× (Josef Kufner)
    22.8. 12:30 NN
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Nejdrive bych nacetl data do 2D pole, nebo databaze. Potom si s tim muzes delat co chces.
    22.8. 13:17 thesan
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Diky, ale je to pro mne prilis strucne.
    22.8. 14:34 lertimir | skóre: 60 | blog: Par_slov
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Podle mne na komplexnejší změny v souborech (tedy uvnitř nich) bash nebo jiný shell není moc vhodný. Pokud je to skutečně S2 je výběr (tedy inkluzivita a stejné pořadí) tak v jakémkoliv interpretovaném jazyce (python, perl, možná i shelově php) (nebo skriptem do editorů jako vim nebo emacs) , podle toho co umíte, bych procházel po řádcích S2, pak ke každému řádku nalezl přilušný v S1 , v něm provedl změnu a šel dál. Co je cílem? udělat to, protože to potřebuji, nebo udělat to v shellu, protože tě nekdo chce cvičit?
    22.8. 17:12 thesan
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Diky. Potrebuju to v ramci zpracovani velkych dat, neni to skolni ukol. Ale take to potrebuju udelat v shellu.
    22.8. 19:24 Aleš Kapica | skóre: 46 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Proč nevyužiješ standarní unixové nástroje jako je diff, awk, …?
    22.8. 19:36 Aleš Kapica | skóre: 46 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Jinak mi přijde, že na to jdeš nějak divně. Porovnávat soubor, který zároveň modifikovat? No dobrá, budiž.

    Já bych na to šel tak, že bych si vyseparoval z S2 část co se má porovnávat. Pak bych ve smyčce ten výstup zpracovával přes grep, tak aby mi vrátil i číslo řádky s nalezeným vzorkem. A pak bych ten soubor S1 - ještě před tím, než najede smyčka na další záznam - opracoval přes ed.

    Jde o to, že je asi žádoucí, aby před hledáním dalšího vzorku byl už soubor S1 modifikovaný, je to tak?
    22.8. 23:00 lertimir | skóre: 60 | blog: Par_slov
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    proboha proč? jakékoli výpočetně přijatelné řešení je dobré. Všechno je to interpretovaný soubor, čistý texták a jestli na začátku je #!/bin/bash nebo #!/usr/bin/perl nebo jakýkoliv jiný jazyk je úplně jedno. Stejně na systému perl už obvykle je, protože dost běžných programů jsou perlové skripty. k tomu scriptu, který tady byl už napsán stačí doplnit jen to #!/usr/bin/perl a když umíš jiný jazyk, tak to udělej v něm. shell je na takovou ulohu divny, protože obvykle pracuje (posuzuje, mění) s objekty na filesystemu tedy soubory a adresáři v celku, dovnitř leze jen málo když tak jako logové záznamy a pod. Možná ve spolupráci s awk by to ohnout šlo, ale awk neznám, sice mě periodicky fascinuje jeho uspornost a efektivita, ale nikdy jsem na něj nanašel sílu.
    wamba avatar 22.8. 14:34 wamba | skóre: 37 | blog: wamba
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Řešení v Perlu 6, (které jde napodobit v čemkoliv jiným)
    perl6 -e '
        my $S2 = "S2".IO.lines.map( *.substr(23,3) ).Set; 
        for "S1".IO.lines -> $l is copy { 
            NEXT {$l.say}
            next if $l.substr(23,3) ∉ $S2; 
            $l.substr-rw(55,5) = " 2.00";
        }
        '
    
    Z S2 vytáhnu sloupec 23-26 do množiny. Jednotlivé řádky z S1 vytisknu nezměněné pokud nenajdu odpovídající shodu v předešlé množině, nebo cokoliv na 55-60 zaměním za 2.00 a pak vytisknu. Na výstupu dostanu nový S1.
    This would have been so hard to fix when you don't know that there is in fact an easy fix.
    22.8. 17:13 thesan
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Diky, Perl bohuzel neumim. Princip chapu.
    22.8. 22:02 RM
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Já bych to udělal takhle: S2 i S1 seřadit programem sort -k podle patřičného sloupce a pak krátký one-liner v Awk, který bude číst ze streamu S1. Program si vždy natáhne jeden řádek pomocí getline() z S2 do proměnné a ten bude testovat s každým řádkem (nebo jen částí) přicházejícím ze streamu. Jakmile dojde ke shodě, budou se provádět substituce a to až k první neshodě, pak se načte další řádek z S2, který se dále bude porovnávat v následujících řádcích přicházejících ze streamu z S1, a tak to půjde až do konce souboru S1.
    22.8. 22:23 RM
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Raději ještě uvedu tu ideu s awk pro čtení ze dvou vstupů, což by nemuselo být až tak jasné:

    awk '{ if(....) "cat S2.sorted" | getline pattern; (PROGRAM: comp pattern with line-col; substitute;print) }' S1.sorted
    Řešení 1× (thesan (tazatel))
    23.8. 15:18 thesan
    Rozbalit Rozbalit vše Re: linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Diky, nakonec jsem na to nejak prisla. Reseni prikladam. Bohuzel tento editor nechce povolit pridani oznaceni pro soubory do skriptu, takze si prosim primyslete za regex soubor1 a za done sobour2.

    while read line

    do var=$(echo "$line" | cut -c 23-26)

    sed -i "/^\(.\{22\}\)\($var\)\(.*\)/s/^\(.\{54\}\)\(......\)\(.*\)/\1 2.00\3/"

    done<

    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.