Úvod do UNIXu 2016/2017

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

Cvičení IV

  1. Úkol z minulé hodiny
  2. grep - vypište záznamy všech uživatelů v systému, kteří se nacházejí v /etc/passwd na řádcích 10 - 20 a jejich jméno obsahuje písmeno 'e'
    • head -n 20 /etc/passwd | tail -n 10 | grep e
  3. Spočítejte řádky zadaného souboru bez použití wc
    • i=0
      while read line; do
      i=$(( i + 1 ))
      done < file
      echo $i
  4. Vytvořte skript, který překopíruje soubory .txt z jednoho adresáře do druhého. Zkopírované soubory však budou mít koncovku .cp
    • for file in ${dir1}/*.txt; do
      base=$(basename ${file})
      cp ${file} ${dir2}/${base%.*}.cp done

Dnešní témata

Úkol 4 (3 body): Vytvořte skript, který pro zadaný soubor a oddělovač provede následující:
Nejprve projde všechny řádky souboru a ověří, jestli všechny mají stejný počet polí (sloupců) vzhledem k oddělovači.
Poté vytvoří n souborů, kde n je onen počet polí. Soubory se budou jmenovat ${puvodniJmeno}.k , kde k je 1 .. n, a budou obsahovat příslušný sloupec.

    • #! /bin/bash
      file=$1
      delimiter=$2
      > counts
      lastn=""
      cat $file | while read line; do
      n=`echo $line | grep -o $delimiter | tr -d "\n"`
      [ -z $lastn ] || [ "${n}" == "$lastn" ] || exit 1
      lastn=$n
      echo ${#lastn} > counts
      done || exit 1
      for (( i=1; i<= $(cat counts); i++ )); do
      cat $file | cut -d $delimiter -f $i > ${file##*/}.$i
      done