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 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ářů: 0
    dnes 00:33 | Komunita

    Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.

    Ladislav Hagara | Komentářů: 4
    včera 23:22 | Pozvánky

    Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou

    … více »
    bkralik | Komentářů: 0
    včera 22:33 | IT novinky

    Dle plánu dnes končí služba Skype. Uživatelé mohou pokračovat v Microsoft Teams.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | IT novinky

    Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.

    Ladislav Hagara | Komentářů: 1
    včera 12:33 | Zajímavý projekt

    Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | Pozvánky

    Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.

    Ladislav Hagara | Komentářů: 0
    4.5. 21:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.

    Ladislav Hagara | Komentářů: 0
    4.5. 14:22 | IT novinky

    Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.

    Ladislav Hagara | Komentářů: 30
    3.5. 22:33 | Nová verze

    Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.

    Ladislav Hagara | Komentářů: 2
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (8%)
     (21%)
     (4%)
     (2%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 527 hlasů
     Komentářů: 22, poslední včera 10:06
    Rozcestník

    Dotaz: Prohození řádků v souboru

    30.1.2019 12:35 Jakub
    Prohození řádků v souboru
    Přečteno: 630×
    Dobrý den pánové, mám napsaný nějaký script v bash v linuxu pro příkazovou řádku a nemůžu nikde dohledat, jak zaměnit celé řádky v textovém souboru. Třeba 5 řádek za 159. Dá někdo tip?

    Odpovědi

    30.1.2019 15:22 debian+
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    napriklad: vstup
    1
    7
    3
    4
    5
    6
    2
    8
    
    skript.sh:
    #!/bin/bash
    
    # ktory < za
    ktory=2
    za=7
    subor="vstup"
    vystup="vystup"
    riadkov=`cat vstup|wc -l`
    
    # uvod 
    cat vstup |head -n $((ktory-1)) > vystup
    
    # za
    cat vstup |head -n $za | tail -n 1 >> vystup
    
    # medzi ktory za
    cat vstup |head -n $((za-1)) | tail -n $((za-ktory-1)) >> vystup
    
    # ktory
    cat vstup |head -n $ktory | tail -n 1 >> vystup
    
    # koniec
    cat vstup | tail -n $((riadkov-za)) >> vystup
    
    30.1.2019 15:41 Ja
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    #!/usr/bin/env bash
    
    if [[ "$2" -gt "$1" ]]; then
      p1="$1"
      p2="$2"
    else
      p1="$2"
      p2="$1"
    fi
    
    cp data.txt data.out.txt
    
    r1=$(sed -n "${p1}p" data.out.txt)
    r2=$(sed -n "${p2}p" data.out.txt)
    sed -i "
    ${p1}i${r2}
    ${p1}d
    ${p2}i${r1}
    ${p2}d
    " data.out.txt
    cat data.out.txt
    
    
    30.1.2019 17:05 debian+
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    Tvoje je efektivnejsie:
    [localhost tip]$ time bash skript.sh 
    
    real	0m0,023s
    user	0m0,014s
    sys	0m0,018s
    [localhost tmp]$ time bash skript_Ja.sh 2 7
    
    real	0m0,016s
    user	0m0,007s
    sys	0m0,009s
    31.1.2019 02:56 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru

    Tolik UUOC nejen bije do očí, ale možná už i dokonce smrdí z terminálu.

    31.1.2019 17:38 debian+
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    Prepisal som to na lepsie:
    #!/bin/bash
     
    # ktory < za
    ktory=2
    za=6
    riadkov=`cat data.txt|wc -l`
    
    # uvod 
    cat << EOF > data.out.txt
    `head -n $((ktory-1)) data.txt`
    `head -n $za data.txt | tail -n 1`
    `head -n $((za-1)) data.txt| tail -n $((za-ktory-1))`
    `head -n $ktory data.txt| tail -n 1`
    `tail -n $((riadkov-za)) data.txt`
    EOF
    cat data.out.txt
    31.1.2019 03:31 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru

    Chápu to správně tak, že to má vzájemně prohodit nějaké dva řádky a že to má být jenom v Bashi?

    Tak potom bych tady měl obecnější prasárnu, která těch záměn umí několik, ale funguje jen tehdy, pokud se soubor vejde do paměti. Definuje funkci swaplines, která přijímá jako parametry dvojice číslel řádků (od 0) k prohození, oddělené pomlčkou. Například tohle by desetiřádkový vstup převrátilo naruby:

    swaplines 0-9 1-8 2-7 3-6 4-5
    

    A teď ta funkce swaplines:

    swaplines() {
      local -a -i from_to
      local -a file
      local -i from
      local -i to
      local aux
      for aux in "$@"; do
        from_to["${aux%%-*}"]="${aux##*-}"
      done
      readarray -t file
      for from in "${!from_to[@]}"; do
        to="${from_to[from]}"
        aux="${file[from]}"
        file[from]="${file[to]}"
        file[to]="$aux"
      done
      for aux in "${file[@]}"; do
        echo "$aux"
      done
    }
    

    Čte to standardní vstup, píše to na standardní výstup a nemá to vůbec žádnou kontrolu chyb syntaxe — tu bych s chutí ponechal čtenáři za cvičení.

    31.1.2019 19:51 pavele
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    Je to taky v bashi, vymění mezi sebou řádek 5 a 8 :-)
    #!/bin/bash
    
    vim -e -c '5m 8' -c '7m 4' -c 'wq' soubor.txt 
    
    31.1.2019 22:38 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    Ked sa to da v "ed" mode vo vim-e, tak to predsa musi ist aj rovno v ed-e

    echo -e "5m8\n8-m5-\nw\nq\n" | ed -s subor.txt
    If you hold a Unix shell up to your ear, you can you hear the C.
    31.1.2019 23:02 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru

    Ano, že má být něco „v bashi“, to se dá chápat různými způsoby. Já vycházím z toho, vim není bash.

    1.2.2019 01:18 Bherzet | skóre: 19 | blog: Bherzetův blog
    Rozbalit Rozbalit vše Re: Prohození řádků v souboru
    Třeba 5 řádek za 159.
    5 za 159, nebo 5. za 159.?

    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.