Úvod do UNIXu – cvičení 8. 4. 2016

Domácí úkoly

  1. Napište shellový skript, který vypíše čárkami oddělený výčet názvů skupin, které jsou uvedeny v souboru /etc/group, ale zároveň nejsou primární skupinou žádného z uživatelů systému. Pozor, opět smíte použít pouze nástroje z již proběhlých cvičení. Snažte se také použít pouze prostředky garantované standardem POSIX. (1 bod)

Řešení domácích úkolů z minula

  1. Nástroj tac není standardem POSIX definován, a tudíž nemusí být všude dostupný. Vymyslete tedy skript pro Bash, který by poskytoval stejnou základní funkcionalitu. Tj. konkrétně aby výstup příkazů cat /etc/passwd | tac a cat /etc/passwd | ./ukol.sh byl zcela identický. Smíte použít pouze nástroje z již proběhlých cvičení. (1 bod)
            
    #!/bin/bash
    
    # pozorovani: sort defaultne oddeluje podle "non-blank prechodu" a cut zas
    # podle tabulatoru, napr. prikazem cut -n /etc/passwd | head -n 1 | xxd
    # lze tedy overit, ze nasledujici jednoduche reseni bude dostacujici
    
    cat -n | sort -k 1 -n -r | cut -f 2-
            
          
  2. Napište skript pro Bash, který vybere 20 nejfrekventovanějších slov z textu zadaného na standardním vstupu a vypíše je uspořádané abecedně včetně jejich četností. Mezi slovem na začátku, uprostřed a na konci věty není žádný rozdíl. Opět platí, že můžete použít pouze nástroje, které jsme si na cvičení ukazovali. Pro testovaní se vám může hodit textový soubor s povídkou. (1 bod)
            
    #!/bin/bash
    
    cat \
            | tr -d [:punct:] \
            | tr -s [:space:] '\n' \
            | tr [:upper:] [:lower:] \
            | sort \
            | uniq -c \
            | sort -k 1nr \
            | head -n 20 \
            | sort -k 2
            
          

Příkazy a úkoly na cvičení