#####
##### Reseni domacich ukolu
#####

# hw10.1)
# bile znaky
cat input_file | sed 's/^[[:space:]]*//'
# nahradí 'bash' za 'dash' na řádcích, které neobsahují '6am'.
cat input_file | sed '/6am/!s/bash/dash/'
# smaze prazdne radky
cat input_file | sed '/^$/d'
# Převede 5-tý sloupec v /etc/passwd na UPPERCASE (jako první úkol z 4-tých cvik)
# pozor, \U je ne std, jinak asi jako pomoci tr
cat /etc/passwd | sed 's/^\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\(.*\)$/\1\2\3\4\U\5\E\6/'
# Převede DOSové newlines na unixové
cat input_from_bill | sed 's/\r$//'

# hw10.2)
# cviceni na shift, argumenty, case

#####
##### Cviceni:
#####

#
# quotovani promennych
#

# bezpecnostni chyba s totalne bizarnim chovanim
echo $(echo 2*3 | bc)
touch 2016-04-13
echo $(echo 2*3 | bc)

# Pouceni: veci, ktere zavisi na interpretaci (retezce, promenne) quotovat (nejprisneji, jak to jde)
# spravne:
echo $(echo '2*3' | bc)

# DULEZITE: expanze promennych
# priklady viz http://j2m.cz/~jm/vyuka/uix2017/exp.sh
A='1 2 3'
rm $A   # maze 3 soubory, '1', '2' a '3'
rm "$A" # maze jeden soubor '1 2 3'

# IFS - Internal Field Separator
IFS=":"
cat /etc/passwd | while read a rest ; do 
	echo "$a"
	# ...
done

# pipe do while a cteni po radkach je uzitecny idiom
# slozitejsi parsovani treba takto
cat /etc/passwd | while read radek ; do 
	sloupec1=$(echo "$radek" | sed 's/:.*$//')
	# ...
done

# $0 ... $9 - parametry skriptu 
# $# pocet argumentu (nepocitaje 0-ty)
# shift  posouva argumenty

# $@ - vsechny argumenty
for a in $@  ; do
	echo "$a"
done

# versus
# "$@" - vsechny argumenty, ale jako by byly v ""
for a in "$@"  ; do 	# totez jako for a in "$1" "$2" ...  (pro neprazdne argumenty)
	echo "$a"
done

#
# zbytky sedu
#

# pattern space vs. hold space
# detaily viz nejlepsi tutorial:

# http://sed.sourceforge.net/grabbag/tutorials/do_it_with_sed.txt

#n -- n(ext), next line
#
#        - jumps to next line. i.e. pattern space is replaced with the contents
#          of the next line
#        - execution is prosecuted in the command following the `n' command
#
#N -- (N)ext, (add) next line
#
#        - next line of input is added to current pattern space, and
#          a `\n' gets embedded in the pattern space

# vypsat liche radky
seq 10 | sed -n 'p;n'
seq 10 | sed 'n;d'

