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 15:44 | Zajímavý software

    Na adrese gravit.huan.cz se objevila prezentace minimalistického redakčního systému GravIT. CMS je napsaný ve FastAPI a charakterizuje se především rychlým načítáním a jednoduchým ukládáním obsahu do textových souborů se syntaxí Markdown a YAML místo klasické databáze. GravIT cílí na uživatele, kteří preferují CMS s nízkými nároky, snadným verzováním (např. přes Git) a možností jednoduchého rozšiřování pomocí modulů. Redakční

    … více »
    2012 | Komentářů: 0
    dnes 12:55 | Zajímavý software

    Tým Qwen (Alibaba Cloud) uvolnil jako open-source své modely Qwen3‑TTS pro převádění textu na řeč. Sada obsahuje modely VoiceDesign (tvorba hlasu dle popisu), CustomVoice (stylizace) a Base (klonování hlasu). Modely podporují syntézu deseti různých jazyků (čeština a slovenština chybí). Stránka projektu na GitHubu, natrénované modely jsou dostupné na Hugging Face. Distribuováno pod licencí Apache‑2.0.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 01:11 | Nová verze

    Svobodný citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 8. Přehled novinek v příspěvku na blogu.

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

    Byla vydána verze 1.93.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
    včera 14:00 | Komunita

    Svobodný operační systém ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, slaví 30. narozeniny.

    Ladislav Hagara | Komentářů: 7
    včera 11:00 | IT novinky

    Společnost Raspberry Pi má nově v nabídce flash disky Raspberry Pi Flash Drive: 128 GB za 30 dolarů a 256 GB za 55 dolarů.

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

    Technologie Skip pro multiplatformní mobilní vývoj, která umožňuje vývojářům vytvářet iOS a Android aplikace z jediné Swift a SwiftUI kódové základny, se s vydáním verze 1.7 stala open source.

    Ladislav Hagara | Komentářů: 5
    včera 03:33 | Zajímavý software Ladislav Hagara | Komentářů: 1
    včera 00:11 | Nová verze

    Byla vydána nová major verze 34.0.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    21.1. 16:11 | Humor

    Win8DE je desktopové prostředí pro Wayland, inspirované nechvalně proslulým uživatelským rozhraním Metro z Windows 8. Nabízí dlaždicové rozhraní s velkými tlačítky a jednoduchou navigací, optimalizované pro dotyková zařízení. Cílem projektu je přetvořit design operačního systému Windows 8 do funkčního a minimalistického rozhraní vhodného pro každodenní použití na Linuxu.

    NUKE GAZA! 🎆 | Komentářů: 12
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (6%)
     (0%)
     (10%)
     (21%)
     (3%)
     (5%)
     (2%)
     (11%)
     (36%)
    Celkem 579 hlasů
     Komentářů: 17, poslední včera 15:24
    Rozcestník

    Dotaz: bash: Jak upravit soubor

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