3. cvičení
Zpracování textu: základní programy a grep
Příkaz head
    
    // Vypíše prvních 10 řádků souboru
    head procesy.txt
    // Vypíše prvních 10 řádků z každého souboru
    head procesy.txt procesy2.txt
    // Udělá to samé co předchozí ale nevypisuje hlavičku
    head -q procesy.txt procesy2.txt
    // Vypíše 2 řádky od začátku souboru
    head -n 2  procesy.txt
    head -2 procesy.txt
    // Vrátí prvních n bajtů
    head -c 5 procesy.txt
    // Přesměrování do souboru
    head -n 2 procesy.txt > qux.txt
    // Použití roury
    ls | head
    // Presměrování na konec souboru
    ls | head >> baz.txt
    
    Příkaz tail
    
    // Vypíše posledních 10 řádků souboru
    tail procesy.txt
    // Vypíše posledních 10 řádků z každého souboru
    tail procesy.txt procesy2.txt
    // Udělá to samé co předchozí ale nevypisuje hlavičku
    tail -q procesy.txt procesy2.txt
    // Vypíše 2 řádky od konce souboru
    tail -n 2  procesy.txt
    tail -2 procesy.txt
    // Vrátí posledních n bajtů
    tail -c 5 procesy.txt
    // Přesměrování do souboru
    tail -n 2 procesy.txt > qux.txt
    // Použití roury
    ls | tail
    // Presměrování na konec souboru
    ls | tail >> baz.txt
    
    Příkaz wc
    
    // Vrátí počet řádků, slov a bitů v souboru
    wc procesy.txt
    // Vrátí počet řádků
    wc -l procesy.txt
    // Vrátí počet znaku
    wc -m procesy.txt
    // Vrátí počet slov
    wc -w procesy.txt
    
    Příkaz tac
Zobrazí obsah souboru na std výstupu ale v opačném pořadí.
    
    tac file.txt
    
    Příkaz rev
Obrátí pořadí znaků v řetězci.
    
    echo "Hello" | rev
    
    Příkaz sort
Setřídí řádky textového souboru.
    
    // Setřídí řádky podle abecedy
    sort fruit.txt
    // Setřídí řádky podle abecedy a výsledek uloží do souboru output.txt
    sort fruit.txt > output.txt
    sort -o output.txt fruit.txt
    // Setřídí řádky v opačném pořadí
    sort -r fruit.txt
    // Zkontroluje jestli je soubor setřízený pokud ne vrací první špatně umístěný řádek
    sort -c fruit.txt
    cat columns.txt
    01 Joe
    02 Marie
    03 Albert
    04 Dave
    // Soubor se třídí podle prvního sloupce
    sort columns.txt
    // Soubor se třídí podle druhého sloupce
    sort -k 2 columns.txt
    
    Příkaz unique
Odstraní opakující se řádky.
    
    uniq unique.txt
    // Vypíše počet opakování
    uniq -c unique.txt
    // Vypíše pouze opakující se řádky
    uniq -d unique.txt
    // Vypíše neopakující se řádky
    uniq -u unique.txt
    
    Příkaz cut
Odebere nebo vyjme část souboru.
    
    // Vybere 3. sloupec
    cut -f 3 cut.txt
    //  Vybere 2 az 4 sloupec
    cut -f 2-4 cut.txt
    // Vybere 1. až 2. a 4. až 5. sloupec
    cut -f 1-2,4-5 cut.txt
    // Vybere 3. sloupec a dále
    cut -f 3- cut.txt
    // Vybere 3. znak na každém řádku
    cut -c 3 cut.txt
    // Vybere 3. až 12. znak na každém řádku
    cut -c 3-12 cut.txt
    // Vybere 3. až 12. Byte
    cut -b 3-12 cut.txt
    // Pomocí -d změníme oddělovač sloupců
    cut -f 1 -d ':' /etc/passwd
    
    Příkaz paste
Vypíše obsah souborů vedle sebe.
    
    // Paralelně
    paste paste.txt paste2.txt
    // Sériově
    paste -s paste.txt paste2.txt
    // Změní oddělovač sloupců
    paste -d "-"  paste.txt paste2.txt
    // Spojí dva soubory a oddělí je tabulátorem
    paste fruit.txt fruitLarge.txt
    // Spojí dva soubory ale oddělí je znakem =
    paste -d =  fruit.txt fruitLarge.txt
    
    Příkaz grep
Nástroj pro filtrování řádků na základě regularního výrazu.
    
    // Vybere řádky obsahující dané slovo
    grep parallels /etc/passwd
    grep "Feb 26 17:0" /var/log/kern.log
    // Rekurzivní procházení adresáře
    grep -r "banana" pokus
    // Vypíše řádky obsahující slovo
    grep -w "ps" procesy.txt
    // Vypíše počet nalezených řádků
    grep -cw "ps" procesy.txt
    // Řádky začínající znakem c
    grep "^c" file.txt
    // Řádky obsahující číslo
    grep "[0-9]" file.txt
    // Řádky obsahující slovo proces nebo file
    grep 'proces\|file' file.txt
    // Radky obsahujici slova o delce 7 - 8 znaku
    grep -E "[[:alpha:]]{7,8}" file.txt
    
    Příkaz tr
Konvertuje nebo smaže znaky.
    
    // Preloží malá písmena na velká
    tr "[:lower:]" "[:upper:]" < fruit.txt
    // Odebere číslice
    echo "Abc123d56E" | tr -d '[[:digit:]]'
    // Nahradí znaky které nejsou A znakem t
    echo "Abc123d56E" | tr -c 'A' 't'
    // Nahradí mezery znakem /
    echo "Can you see how tr command can be wonderful?" | tr -s " " "/"
    // Nahradí více mezer jdoucí po sobě jednou
    echo "Can you                 see how tr          command can be wonderful?" | tr -s " "
    
    Úkoly
Skupina Po 16:45-18:15
- 
            Vypište očíslované řádky souboru od řádku 10 do řádku 20 včetně v opačném pořadí řádků. 1 bod 
- 
            Setřiďte tabulkový soubor (sloupce oddělené tabulátorem) podle třetího sloupce číselně sestupně. 1 bod 
- 
            Prohoďte v tabulkovém souboru první a druhý sloupec. 1 bod 
- 
            Vypište pouze řádky souboru, které nejsou v jiném souboru, tj. "rozdíl" souborů (jako rozdíl množin). 1 bod 
- 
            Vypište seznam uživatelů ve tvaru "login_jmeno=JMENO PRIJMENI". Seznam uživatelů naleznete v souboru /etc/passwd.1 bod 
Skupina St 16:45-18:15
- 
                Vypište očíslované řádky souboru /etc/passwd od řádku 6 do řádku 9 včetně v opačném pořadí řádků. 1 bod 
- 
                Vypište seznam jmen uživatelských skupin do jedné řádky, jména oddělte mezerami. Seznam skupin se nachází v souboru /etc/group, který má opět textový formát: _analyticsusers:*:250:_analyticsd,_networkd,_timed,_reportmemoryexceptionV prvním poli je jméno skupiny, ve třetím číslo (GID) a ve čtvrtém seznam členů. 1 bod 
- 
                Vypište do sloupečku seznam jmen skupin, do nichž patříte. 1 bod 
- 
                Vypište seznam jmen uživatelů, setříděný vzestupně podle jejich UID. Seznam uživatelů naleznete v souboru /etc/passwd.1 bod 
- 
                V adresáři /etc najděte všechny soubory s příponou „conf“ a zjistěte, který z nich má nejvíce řádek. 1 body