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

    Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | Komunita

    FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | IT novinky

    Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.

    Ladislav Hagara | Komentářů: 1
    včera 14:22 | Zajímavý software

    Insula Faktury je open source generátor faktur, který běží přímo ve webovém prohlížeči. Žádná registrace, žádné sledování, žádné omezení. Zdrojové kódy jsou k dispozici na Codebergu.

    Ladislav Hagara | Komentářů: 5
    včera 13:22 | Komunita

    První Mobile Linux Hackday v Plzni, tj. komunitní setkání věnované Linuxu na mobilních zařízeních, proběhne 24. července od 10:00. Akce je otevřená všem zájemcům – od zvědavců po zkušené vývojáře. Dopoledne proběhnou přednášky Davida Heidelberga a Petra Hodiny o aktuálním stavu mobilního Linuxu: proč vůbec chtít tučňáka v kapse, jaké telefony jsou dnes dobře podporované a co taková podpora obnáší. Po obědě se zaměříme na konkrétní

    … více »
    Ladislav Hagara | Komentářů: 0
    14.7. 19:33 | Nová verze

    3D software Blender byl vydán ve verzi 5.2 s prodlouženou podporou. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    14.7. 16:55 | Zajímavý software

    SketchForge 3D (GitHub, reddit) je open source 3D editor / CAD běžící ve webovém prohlížeči bez nutnosti účtu nebo cloudového úložiště. Inspirovaný byl Tinkercadem. Doporučena je lokální instalace.

    Ladislav Hagara | Komentářů: 0
    14.7. 12:44 | Nová verze

    Byla vydána nová verze 11.9 webového prohlížeče Midori (Wikipedie, GitHub). S novým centrem ovládání, pokročilejším blokováním reklam, optimalizací výkonu…

    Ladislav Hagara | Komentářů: 0
    14.7. 04:22 | Zajímavý projekt

    Na Crowd Supply běží kampaň na podporu open source čtečky elektronických knih Open Book Touch. Postavena je na ESP32-S3. Má 4,26palcový dotykový e-papírový displej s rozlišením 480×800 pixelů, podsvícení, slot na microSD kartu. Cena je 149 dolarů a poštovné 12 dolarů. Dodání je plánováno na duben 2027.

    Ladislav Hagara | Komentářů: 8
    13.7. 18:00 | IT novinky

    Na Humble Bundle běží akce Linux: All the Things by O'Reilly a Picos, HATs, and More by Raspberry Pi Press. Elektronické knihy lze koupit se slevou a současně podpořit organizace Code for America a Raspberry Pi Foundation.

    Ladislav Hagara | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 2131 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: bash: Jak upravit soubor

    8.9.2017 16:15 michal
    bash: Jak upravit soubor
    Přečteno: 524×
    Jak zkrátit všechny řetězce v celém souboru na pět znaků ? Jde o to uřezat konec každého řetězce. Řetězce jsou bez mezer a jsou oddělené čárkami.

    Příklad - obsah původního souboru:

    ovoce,zelenina,mandarinky,jablka
    okurky,kapusta,cibule,chmel
    jahody,maliny,papriky,kokosy
    brambory,mirabelky

    Požadovaný obsah:

    ovoce,zelen,manda,jablk
    okurk,kapus,cibul,chmel
    jahod,malin,papri,kokos
    bramb,mirab

    Řešení dotazu:


    Odpovědi

    8.9.2017 16:27 Vlad
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    perl -pe 's/([^,\n]+)/substr $1, 0, 5/ge' < input > output

    nebo přímo upravit v souboru

    perl -pi -e 's/([^,\n]+)/substr $1, 0, 5/ge' text
    8.9.2017 23:50 michal
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    To je zajímavé, jak se v tom Perlu dají některé věci jednoduše řešit. Ale v tuto chvíli to funguje všechno, kromě odpovědi od Jirka. Díky všem.
    8.9.2017 16:35 Jirka
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    cut -b 1-5 soubor
    8.9.2017 20:11 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    cut -b 1-5 soubor
    Nevyhovuje - ořízne konce řádků, ale my chceme oříznout slova oddělená na řádku čárkami.
    -- OldFrog
    8.9.2017 20:09 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    Skript pro filtrování standardního vstupu na výstup - uložit do souboru filter.sh a nastavit spustitelnost:
    #!/bin/bash
    
    while read LINE;
    do
    	FIRST="Y";
    	echo "${LINE}" | sed 's!,!\n!g' | \
    	while read WORD;
    	do
    		if [ "${FIRST}" != "Y" ];
    		then
    			echo -ne ",";
    		fi;
    		echo -ne "${WORD}" | cut -z -c "1-5";
    		FIRST="N";
    	done;
    	echo -ne "\n";
    done;
    
    #eof
    
    Zdrojový text je v souboru a:
    # cat a
    ovoce,zelenina,mandarinky,jablka
    okurky,kapusta,cibule,chmel
    jahody,maliny,papriky,kokosy
    brambory,mirabelky
    
    Spuštění čte z a zapisuje do b:
    # ./filter.sh < a > b
    
    Výsledný text je v souboru b:
    # cat b
    ovoce,zelen,manda,jablk
    okurk,kapus,cibul,chmel
    jahod,malin,papri,kokos
    bramb,mirab
    
    -- OldFrog
    8.9.2017 20:34 scisoft
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    #!/bin/sh sed -E 's/([[:alpha:]]{1,5})[[:alpha:]]*([,$]*)/\1\2/g' zkus.txt

    Soubor 'zkus.txt' obsahuje: ovoce,zelenina,mandarinky,jablka okurky,kapusta,cibule,chmel jahody,maliny,papriky,kokosy brambory,mirabelky

    Vystup scriptu:

    ovoce,zelen,manda,jablk okurk,kapus,cibul,chmel jahod,malin,papri,kokos bramb,mirab
    10.9.2017 00:48 RM
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    sed -r 's/([^,]{,5})[^,]*/\1/g'
    
    8.9.2017 20:57 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    awk -F, 'BEGIN {OFS = ","}
        {
            for (i = 1; i <= NF; i++) {
                $i = substr($i, 1, 5)
            }
            print
        }' <data.txt
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.9.2017 21:04 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor

    To je domácí úkol na awk (skoro) one-linery, že jo.

    awk 'BEGIN {FS = ","; OFS = FS}
         {for (i = 1; i <= NF; ++i) $i = substr($i, 1, 5); print $0}'
    

    Jestli to ale musí být opravdu striktně v čistém bashi, tak prosím:

    IFS=','
    while read -a line; do
      echo -n "${line[0]:0:5}"
      for word in "${line[@]:1}"; do
        echo -n ",${word:0:5}"
      done
      echo
    done
    
    8.9.2017 22:21 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor

    Jestli to ale musí být opravdu striktně v čistém bashi, tak prosím:

    IFS=','
    while read -a line; do
      echo -n "${line[0]:0:5}"
      for word in "${line[@]:1}"; do
        echo -n ",${word:0:5}"
      done
      echo
    done
    
    Dobře, tohle je hezčí řešení než to moje :-)
    -- OldFrog
    9.9.2017 23:40 RM
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    IFS=','
    while read -a aline; do
      line="`printf '%.4s,' ${aline[@]}`"
      printf '%s\n' "${line:0:-1}"
    done
    
    9.9.2017 23:54 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    Tohle vypadá hezky. Trochu jsem si to upravil:
    #!/bin/bash
    
    while IFS=',' read -a aline; do
      line="`printf '%.5s,' ${aline[@]}`"
      printf '%s\n' "${line:0:-1}"
    done
    
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    8.9.2017 23:01 jekub
    Rozbalit Rozbalit vše Re: bash: Jak upravit soubor
    IFS=,
    function f5 {
       while :
       do
          echo -n "${1:0:5}"
          shift
          if [ -z $1 ]; then
             echo
             break
          fi
          echo -n "$IFS"
       done;
    }
    
    while read line;
    do
       f5 $line
    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.