#####
##### Reseni domacich ukolu
#####
# 1)
awk '
function rev(line)
{
    n = split($line, array, "")
    ret = ""
    for (i = 1; i <= n; i++)
        ret = array[i] ret

    return ret
}

{
    reversed = rev($0);
	if (reversed == $0 || NR % 2 == 0)
        print reversed;
}
'

# 2) 

awk '
BEGIN {
   RS = "<";
   FS = "=";
}

$1 ~ /^[[:blank:]]*a[[:blank:]]+/ {
   i=1
   while (i <= NF)
   {
      if ($i ~ /[[:blank:]]+href[[:blank:]]*$/)
      {
         split ($(i+1), pole, "[[:blank:]]*\"[[:blank:]]*");
         print pole[2]
      }
      else if ($i ~ />/)
      {
         break;
      }
      ++i;
   }
}
'

#####
##### Cviceni
#####

#
# komprese cheat sheet
# http://www.cyberciti.biz/howto/question/general/compress-file-unix-linux-cheat-sheet.php
# 

#
# diff / patch
#

# stahnete si 
wget http://j2m.cz/~jm/vyuka/unix2017/echo.tar.bz2

# rozbalte
bunzip2 echo.tar.bz2
tar -xvf echo.tar

# slozka echo obsahuje ruzne implementace prikazu echo na ruznych unixech

man diff
man patch

# jake jsou rozdily mezi unix5 a unix3
diff unix*
# (zadne)

# podivejte se na rozdil mezi openbsd_broken.c a openbsd.c 
# a udelejte patch, ktery _broken soubor "opravi"
diff openbsd_broken.c openbsd.c > newline.patch
patch openbsd_broken.c newline.patch

# zabalte upravenou slozku
tar -cf echo.tar echo/*

#
# awk zbytky
#

# vypiste radky z /etc/passwd, kde username obsahuje mysql 
cat /etc/passwd | awk 'BEGIN {FS=":"} $1 ~ /mysql/'

# napiste skript sum.sh, co secte cisla ctena ze vstupu
# POZOR na spravny shebang
seq 10 | ./sum.sh

cat > sum.sh <<'EOF'
#!/usr/bin/awk -f

{for (i=1; i<=NF; i++) s=s + $i; }; END{print s}
EOF
chmod +x sum.sh


#
# pomocne soubory && trap #2
#

# docasne soubory - by mely byt unikatni
# aby neinterferovaly s ostatnimi programy (nebo ruznym bezicimi instancemi tehoz)
# treba timestamp a pid $$ 
TMP="/tmp/temp_$$.$(date '+%s')"
# nebo utilita mktemp
# mktemp

# trap a mazani temp souboru i v pripade zabiti

cat > test.sh <<"EOF"
#!/bin/bash
# pozor, muze se chovat jinak v jinych shellech
# psat portable traps neni uplne trivialni

trap 'on_exit' EXIT

on_exit () {
	echo on_exit
	rm -f "$TMP"
}

TMP="$(mktemp)"
echo TMP="$TMP"
echo bleble > "$TMP"

echo start sleep
sleep 100
echo end sleep
EOF
chmod +x test.sh

# pustime na pozadi
./test.sh &
# vypiseme pid
echo $!
# pockame nez umre/skonci
wait $!
# v jinem terminalu muzeme zkusit zabit, a pozorujme slozku kde mktemp vytvoril TMP

# Odzkousejte

ps
ps -e
ps -ejH

#Vypište seznam všech běžících procesů v systému tak, že
#vypíšete pouze jejich PID a pak jméno příkazu, kterým byl proces
#spuštěn

# Hint: option '-o'

ps -e -o 'pid,comm'


# najdete vsechny svoje procesy
ps -e -o 'user,pid,comm' | grep "^"`whoami`

# kill all

killall -s 9 soffice.bin

# napiste funkci ktera vrati 0 pokud pid zadany jako $1 bezi

bezi () {
	ps -e -o pid= | grep "$1" > /dev/null
	return $?
}


# priklad pouziti - bezi proces s id 100?
bezi 100 && echo 'bezi' || echo nebezi

