Úvod do UNIXu 2016/2017

0  1  2  3  4  5  6  7  8  9  10  11  12 

Cvičení V

  1. Úkol z minulé hodiny
  2. vypište "obsah proměnné $jmeno je: blabla", kde blabla je opravdu obsah proměnné. Nepoužívejte zpětná lomítka.
    • jmeno=blabla
      echo 'obsah promenne $jmeno je'$jmeno
  3. vypište ze souboru /etc/passwd pouze jména uživatelů
    • cat /etc/passwd | cut -d: -f1
  4. Vytvořte skript, který vezme jméno souboru a zkontroluje, zda má koncovku .sh. Použijte příkaz case.
    • filename=$1
      case $filename in
      *.sh) echo "YES"
      ;;
      *) echo "NO"
      ;;
      esac
  5. Vytvořte soubor obsahující seznam souborů v nějakém (neprázdném) adresáři a příslušné počty řádků. Poté tento soubor seřaďte podle tohoto počtu.
    • dir=$1
      > tmp
      for file in $dir/*; do
      [ -d $file ] && continue
      wc -l $file >> tmp
      done
      sort -t' ' -k1n -o list.sorted < tmp
      rm tmp
  6. pomocí paste vypište řádky souboru očíslované
    • file=$1
      count=$(wc -l < $file)
      seq 1 $count > numbers
      paste -t ' ' numbers $file > $file.numbered
  7. Stáhněte si soubor a seřaďte jej podle prvních 4 sloupců vzestupně, jen druhý sloupec sestupně.
    • wget https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
      sort -t, -n -k1,1 -k2,2r -k3,3 -k4,4

Dnešní témata

Úkol 5 (3 body):
V zadaném souboru spočítejte počet výskytů samohlásek na každé řádce.
Poté soubor seřaďte podle počtu těchto výskytů.
V případě shody rozhoduje délka řetězců a případně lexikografické uspořádání.
Poznámky:
Ve výsledném souboru mají být řádky jako v původním, žádná čísla ani znaky navíc.
Skript musí jít spustit a vydat správný výsledek.
Pošlete prosím jako přílohu.

    • > tmp
      cat $1 | while read line; do
      vowels=$(grep -Eo "[aeiouy]" <<< $line)
      len=${#line}
      vowels=${#vowels}
      echo "${vowels}:${len}:${line}" >> tmp
      done
      sort -t: -k1n -k2n -k3 -o tmp < tmp
      cut -d: -f3- > tmp < $1.sorted