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

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,58 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,32 %. Procesor AMD používá 67,43 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 0
    dnes 05:55 | IT novinky

    V Las Vegas probíhá veletrh CES (Consumer Electronics Show, Wikipedie). Firmy představují své novinky. Například LEGO představilo systém LEGO SMART Play: chytré kostky SMART Brick, dlaždičky SMART Tagy a SMART minifigurky. Kostka SMART Brick dokáže rozpoznat přítomnost SMART Tagů a SMART minifigurek, které se nacházejí v její blízkosti. Ty kostku SMART Brick aktivují a určí, co má dělat.

    Ladislav Hagara | Komentářů: 0
    včera 18:33 | Bezpečnostní upozornění

    Vládní CERT (GovCERT.CZ) upozorňuje (𝕏) na kritickou zranitelnost v jsPDF, CVE-2025-68428. Tato zranitelnost umožňuje neautentizovaným vzdáleným útočníkům číst libovolné soubory z lokálního souborového systému serveru při použití jsPDF v prostředí Node.js. Problém vzniká kvůli nedostatečné validaci vstupu u cest k souborům předávaných několika metodám jsPDF. Útočník může zneužít tuto chybu k exfiltraci citlivých

    … více »
    Ladislav Hagara | Komentářů: 4
    včera 16:22 | Komunita

    V úterý 13. ledna 2025 se v pražské kanceláři SUSE v Karlíně uskuteční 5. Mobile Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a související infrastrukturu. Akci pořádá David Heidelberg.

    … více »
    lkocman | Komentářů: 0
    včera 16:00 | Pozvánky

    Už je 14 dní zbývá do začátku osmého ročníku komunitního setkání nejen českých a slovenských správců sítí CSNOG 2026. Registrace na akci je stále otevřená, ale termín uzávěrky se blíží. I proto organizátoři doporučují, aby se zájemci přihlásili brzy, nejlépe ještě tento týden.

    … více »
    VSladek | Komentářů: 0
    včera 02:22 | Pozvánky

    Rok 2026 sotva začal, ale už v prvním týdnu se nashromáždilo nezvykle mnoho zajímavostí, událostí a zpráv. Jedno je ale jisté - už ve středu se koná Virtuální Bastlírna - online setkání techniků, bastlířů a ajťáků, kam rozhodně doražte, ideálně s mikrofonem a kamerou a zapojte se do diskuze o zajímavých technických tématech.

    Dějí se i ne zcela šťastné věci – zdražování a nedostupnost RAM a SSD, nedostatek waferů, 3€ clo na každou položku z Číny … více »
    bkralik | Komentářů: 0
    5.1. 22:00 | Komunita

    Vývojáři GNOME a Firefoxu zvažují ve výchozím nastavení vypnutí funkce vkládání prostředním tlačítkem myši. Zdůvodnění: "U většiny uživatelů tento X11ism způsobuje neočekávané chování".

    Ladislav Hagara | Komentářů: 11
    5.1. 15:22 | Nová verze

    Nástroj pro obnovu dat GNU ddrescue (Wikipedie) byl vydán v nové verzi 1.30. Vylepšena byla automatická obnova z disků s poškozenou čtecí hlavou.

    Ladislav Hagara | Komentářů: 0
    5.1. 12:55 | IT novinky

    Protokol IPv6 má již 30 let. První návrh specifikace RFC 1883 je z prosince 1995.

    Ladislav Hagara | Komentářů: 15
    5.1. 01:55 | IT novinky

    Byli vyhlášeni vítězové ocenění Steam Awards 2025. Hrou roku a současně nejlepší hrou, která vám nejde, je Hollow Knight: Silksong.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (1%)
     (4%)
     (0%)
     (11%)
     (24%)
     (5%)
     (6%)
     (3%)
     (11%)
     (51%)
    Celkem 238 hlasů
     Komentářů: 5, poslední dnes 10:35
    Rozcestník

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

    22.8.2017 12:18 nin-ki
    linux, bash: porovnani radku v souborech S1 a S2 a nasledna zmena hodnoty v danem soupci v S1
    Přečteno: 513×
    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

    22.8.2017 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.2017 13:17 nin-ki
    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.2017 14:34 lertimir | skóre: 64 | 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.2017 17:12 nin-ki
    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.2017 19:24 Aleš Kapica | skóre: 52 | 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.2017 19:36 Aleš Kapica | skóre: 52 | 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.2017 23:00 lertimir | skóre: 64 | 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.2017 14:34 wamba | skóre: 38 | 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.2017 17:13 nin-ki
    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.2017 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.2017 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× (nin-ki (tazatel))
    23.8.2017 15:18 nin-ki
    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.