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

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    dnes 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    dnes 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    včera 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    včera 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 16
    včera 03:55 | Komunita

    sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.

    Ladislav Hagara | Komentářů: 0
    6.5. 22:11 | Nasazení Linuxu

    Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 2
    6.5. 13:22 | IT novinky

    Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.

    Ladislav Hagara | Komentářů: 1
    6.5. 04:55 | Nová verze

    Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 1
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 551 hlasů
     Komentářů: 26, poslední dnes 09:58
    Rozcestník

    Dotaz: Echo s mezerami

    24.3.2009 19:10 LorD_OniX
    Echo s mezerami
    Přečteno: 355×

    Ahoj, mam skipt:

    - ocekava na svem vstupu cteni z stdin, takze mu posleme pres cat libovolny soubor

    - tento skript tento soubor zpracovava

    - v tomto skriptu jsem si dal cteni toho souboru po radcich, syntax:

    while read line

    do

        echo "$line"

    done

    - toto funguje skvele (vstupem jsou data vstupniho souboru), ale echo ma jednu nezadouci vlastnost a tu, ze

    kdyz je ve vstupnim souboru na radku libovolny pocet mezer nasledovany textem, echo nikdy tyto mezery nevypise a vypise

    radek az od prvniho vyskytu textu. Potreboval bych proto od vas kdo mate dobre zkusenosti s bashem, jak byste v cyklu resili

    postupne prochazeni souboru po radcich a aby to vypisovalo i tyto mezery, popripade nejak to implementovat do toho cyklu

    co jsem napsal ja. Predem moc dekuji

    Odpovědi

    24.3.2009 19:34 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Echo s mezerami
    ale echo ma jednu nezadouci vlastnost a tu, ze kdyz je ve vstupnim souboru na radku libovolny pocet mezer nasledovany textem, echo nikdy tyto mezery nevypise a vypise
    Problém není u echo, ale u read, který přeskočí počáteční mezery.
    a aby to vypisovalo i tyto mezery
    To záleží, co s tím chcete dál dělat - nestačilo by to řešit rourou/použít AWK/...
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    24.3.2009 19:37 LorD_OniX
    Rozbalit Rozbalit vše Re: Echo s mezerami

    Dekuji moc za tu vasi odpoved. Ja bych potreboval to nejak nacitat ( nejlepe po radcich), abych tyto radky mohl zpracovavat ci upravovat. A prave potrebuji aby

    to nacitalo do nejake promenne i ty mezery, ktere jak jste rekl funkce read orezava. Bohuzel nevim jak pres rouru to resit. Pres awk taky nevim, ja

    uz mam napsany cely skript v bashi a jenom bych potreboval si tam nejak vlozit tuto funkci do promenne abych s ni mohl dale pracovat. Pokud ale mate

    lepsi napad, napiste, budu moc rad.

    24.3.2009 19:45 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Echo s mezerami
    abych tyto radky mohl zpracovavat ci upravovat

    Kupodivu :-). Jde o to, co s nimi chcete dělat.

    Pokud ale mate lepsi napad, napiste, budu moc rad.

    Jeden bych měl - nezalamujte řádky, pokud nekončí odstavec. Díky

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    24.3.2009 23:09 deadmail
    Rozbalit Rozbalit vše Re: Echo s mezerami
    Da sa zmenit oddelovac v bashi.

    Takze pred cyklus while nastavit napr. IFS="@". Potom uz medzery na zaciatku nacita v poriadku - fungovat to bude ale len ak na zaciatku ziadneho riadku nie je zavinac(@).

    Treba zvolit znak, ktory sa urcite v subore nenachadza ako prvy znak v riadku.
    25.3.2009 18:24 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Echo s mezerami
    Viděl bych jako rozumné jako oddělovač zvolit právě znak pro nový řádek, místo obvyklá svaté trojice LF,TAB,SPACE...
    while IFS="^M" read line; do
      echo "$line";
    done < soubor.txt
    
    ^M lze vložit buď ctrl+v + enter, nebo prostě
    bash$ while IFS="
    > " read line; do echo "$line"; done < a.txt
    
    nebo ve skriptu
    while IFS="
    " read line; do
      echo "$line";
    done < a.txt
    No a někdy když řádek nepotřebujete dělit se hodí i to $REPLY níže.
    24.3.2009 23:14 deadmail
    Rozbalit Rozbalit vše Re: Echo s mezerami
    nasiel som aj druhu moznost v bashi:
    while read
    do
        echo "$REPLY"
    done
    
    kozzi avatar 24.3.2009 23:44 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Echo s mezerami
    Doporucuju pouzit gawk (awk nee nejelo by ti to na adele ;-)). Jinak já osobně sem třetí část projektu napsal na jeden řádke v sedu, ale takovou prasárnu svět ještě neviěl :-D
    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    25.3.2009 17:46 LorD_OniX
    Rozbalit Rozbalit vše Re: Echo s mezerami

    Taky jsem videl u kamose jednou velkou rouru se sedem. Zkusil jsem ten field separator a funguje to, strasne moc diky. Nenapadla me takovato vec. Pokud jeste muzete odpoved, tak se me podarilo prepsat tento skript awk, ale zarazil jsem se u jedne veci:

     

    cat soubor | awk '

    /libovolny reg. vyraz/ {

     #prikazy

    a tady v tomto miste bych potreboval z promenne $0 vypsat text, ktery bych nejak upravil pres regularni vyraz. Jenze kdyz napisu

    /libovolny reg. vyraz/ { print }, tak bash hodi chybu, protoze tato syntaxe neni dovolena

    mam knizku s awk a nic jsem tam na tento zpusob nenasel nebo kdyby do promenne sel ulozit reg. vyraz

    umim delat hodne jenom v sedu a nevim jestli ma awk neco taky na substuci, abych si mohl s toho reg. vyrazu vytahnout co potrebuju

    }

    Diky moc za odpovedi a za predesle rady :)

    '

    25.3.2009 18:39 LorD_OniX
    Rozbalit Rozbalit vše Re: Echo s mezerami

    Uz jsem na to prisel, posledni vec uz je jenom jak nahradit znaky < > & za sve html ekvivalenty:

    gsub("&","&amp;") funguje
    gsub(">","&gt;") tyto dva nefunguji, kdyz jsem pouzil escape sekveni \&gt; napr, tak bash hodi warning  warning: escape sequence `\&' treated as plain `&'
    gsub("<","&lt;")

    Diky moc za rady.

    26.3.2009 10:03 deadmail
    Rozbalit Rozbalit vše Re: Echo s mezerami

    mne to funguje takto:

    awk '{gsub(/&/, "\\&amp;");
    gsub(/</, "\\&lt;");
    gsub(/>/, "\\&gt;");
    print}' subor
    
    

    upravene podla www.delorie.com/gnu/docs/gawk/gawk_136.html .

    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.