Programovani v shellu 1 (BIK-PS1) (2014)
grep, sed a awk se daji pouzit jako prikazy i jako filtry.
grep '[0-9]G' data.txt
je stejne jako
cat data.txt | grep '[0-9]G'
Vytiskne pouze radky odpovidajici vyrazu
grep [prepinace] 'vzor' [soubory]
Prepinace:
i - case insensitivev - vypise pouze radky ktere neobsahuji vzorc - vypise pouze pocet odpovidajicich radekl - vypise pouze soubory ktere obsahuji dany radekn - vypise odpovidajici radky s cislem radkuE - rozsireny regexp (egrep)F - fixni retezec (fgrep)Ekvivalent k grep -E
egrep '^no(fork|group)' /etc/group
misto
grep '^no\(fork\|group\)' /etc/group
Ekvivalent k grep -F
vzor neni regularni vyraz ale obycejny retezec. Je rychlejsi nez grep.
S prazdnym prikazem funguje jako cat. sed '' file.txt je stejne jako cat file.txt.
sed [prepinace] 'prikaz' [soubory]
Prepinace:
-n - potlaci automaticke kopirovani vystupu-f - nacteni scriptu ze souboruPrikazy:
d - zrusi radkup - vypise radkus/RE1/RE2/? - nahradi regexp RE1 retezcem RE2. ? jsou volby. (jako vim)q/RE/ - ukonci vstup narazi li na RE1Programovatelny filtr vytvoreny: __A__ho. __W__einberg, __K__ernigham
Podle vzoru se vyberou radky a provedou se s nimi urcite operace.
Radku prohlizi jako posloupnost $1, $2, …, $n oddelenou mezarami (oddelovacem). $0 je celi radek.
Prepinace:
F - oddelovacVzory:
BEGIN - pred zpracovanim prvni radkyEND - po zpracovani posledni radkyvyraz - pro radky vyhovujici danemu vyrazuzacatek,konec - pro radky zacinajici vyrazem zacatek a konci vyrazem konecTypy vyrazu:
Logicke vyrazi:
Preddefinovane promenne:
$n - hodnote n-te polozky z radkuNF - pocet polozek v aktualnim radkuNR - cislo aktualni radkyFS - vstupni oddelovac polozek na radkuOFS - vystupni oddelovac polozek na radkuPodminka if a cykly jako v C. dale for i in range
Preddefinovane funkce:
datovy soubor data:
Steve Jobs Apple 30
Bill Gates Microsoft 35
Mark Zuckerberg Facebook 25
Peter Thiel Paypal 40
Elon Musk Tesla 8
Soucet majetku
awk '{c = c + $4}END {print c;}' data
138
Prumer
awk '{c = c + $4}END {print c/NR;}' data
27.6