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 | IT novinky

    Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.

    Ladislav Hagara | Komentářů: 8
    dnes 10:55 | Zajímavý projekt

    Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].

    Ladislav Hagara | Komentářů: 4
    dnes 01:33 | IT novinky

    Celkové tržby společnosti Canonical za rok 2024 byly 292 milionů dolarů (pdf). Za rok 2023 to bylo 251 milionů dolarů.

    Ladislav Hagara | Komentářů: 1
    dnes 01:22 | Nová verze

    Byla vydána verze 1.88.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 6.17. Mimo jiné aktualizuje Tor Browser (14.5.4) a opravuje několik chyb.

    Fluttershy, yay! | Komentářů: 0
    včera 21:11 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 13:11 | IT novinky

    Město Lyon posiluje svou digitální suverenitu a postupně nahrazuje software od společnosti Microsoft bezplatnými alternativami, zejména OnlyOffice pro kancelářské aplikace a Linux a PostgreSQL pro systémy a databáze.

    Ladislav Hagara | Komentářů: 9
    včera 11:44 | Zajímavý projekt

    Evropská občanská iniciativa Stop Destroying Videogames se snaží o to, aby vydavatelé, kteří spotřebitelům v Evropské unii prodávají videohry nebo na ně udělují licence, měli povinnost tyto hry ponechat ve funkčním (hratelném) stavu i po ukončení podpory ze své strany. Podpořit podpisem tuto iniciativu můžete v Systému pro online sběr podpisů.

    trekker.dk | Komentářů: 5
    včera 11:22 | Komunita

    Mozilla oficiálně ukončila svůj již několik let mrtvý projekt DeepSpeech pro převod řeči na text.

    Ladislav Hagara | Komentářů: 2
    včera 05:22 | Komunita

    Krátce po oficiálním oznámení forku X.Org Xserveru s názvem XLibre Xserver byl ve Fedoře předložen návrh, aby byl X.Org Xserver nahrazen tímto XLibre Xserverem. Po krátké ale intenzivní diskusi byl návrh stažen.

    Ladislav Hagara | Komentářů: 25
    Jaký je váš oblíbený skriptovací jazyk?
     (58%)
     (29%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 318 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: bash: Jak upravit soubor

    8.9.2017 16:15 michal
    bash: Jak upravit soubor
    Přečteno: 517×
    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: 45 | 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: 45 | 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.