Naučíte se efektivně pracovat s textovými soubory pomocí příkazové řádky. Zvládnete vyhledávání, filtrování, třídění a úpravu textových dat. Tyto dovednosti jsou nezbytné při práci s logy, konfiguračními soubory a zpracování dat.
Uživatelské jméno: kali
Heslo: kali
Jste přihlášeni jako standardní uživatel s právem sudo.
Vytvoříte soubory s testovacími daty, se kterými budete pracovat.
Vytvoření souboru se seznamem uživatelů:
cat > uzivatele.txt << EOF
Jan Novak,25,Praha,programator
Eva Svobodova,32,Brno,designer
Petr Dvorak,28,Praha,administrator
Anna Novotna,45,Ostrava,manazer
Martin Cerny,22,Brno,programator
Lucie Kralova,31,Praha,tester
Tomas Horak,39,Ostrava,programator
EOFCo se děje:
cat > přesměruje vstup do souboru<< EOF zahájí víceřádkový vstup (končí slovem EOF)Vytvoření log souboru:
cat > system.log << EOF
2024-03-01 10:15:23 INFO System started
2024-03-01 10:15:45 ERROR Failed to connect to database
2024-03-01 10:16:12 WARNING Low disk space
2024-03-01 10:17:33 INFO User login: admin
2024-03-01 10:18:41 ERROR Connection timeout
2024-03-01 10:19:55 INFO Backup completed
2024-03-01 10:20:14 WARNING High CPU usage
2024-03-01 10:21:08 ERROR Service crashed
EOFOvěření vytvořených souborů:
ls -l *.txt *.logNaučíte se efektivně vyhledávat text v souborech.
Vyhledání konkrétního slova:
grep "Praha" uzivatele.txtCo se děje:
grep vyhledá všechny řádky obsahující slovo "Praha"Vyhledání bez rozlišování velkých/malých písmen:
grep -i "PRAHA" uzivatele.txtCo se děje:
-i = ignore case (ignoruj velikost písmen)Zobrazení čísel řádků:
grep -n "programator" uzivatele.txtCo se děje:
-n = zobraz číslo řádku, kde byl text nalezenPočítání výskytů:
grep -c "programator" uzivatele.txtCo se děje:
-c = count (spočítej počet řádků s výskytem)Inverzní vyhledávání (řádky NEOBSAHUJÍCÍ text):
grep -v "Praha" uzivatele.txtCo se děje:
-v = invert (obrať výběr)Vyhledání v log souboru:
grep "ERROR" system.logZobrazí pouze chybové záznamy.
Naučíte se extrahovat konkrétní části z textových řádků.
Extrakce pouze jmen (první sloupec):
cut -d',' -f1 uzivatele.txtCo se děje:
cut odděluje části textu-d',' = delimiter (oddělovač je čárka)-f1 = field 1 (první pole/sloupec)Extrakce jména a věku:
cut -d',' -f1,2 uzivatele.txtCo se děje:
-f1,2 = zobraz první a druhý sloupecPoužití AWK pro pokročilejší zpracování:
awk -F',' '{print $1, $4}' uzivatele.txtCo se děje:
awk je mocný nástroj pro zpracování textu-F',' = field separator (oddělovač polí je čárka){print $1, $4} = vypiš první a čtvrtý sloupec$1 = první sloupec, $2 = druhý atd.Výběr pouze programátorů:
awk -F',' '$4 == "programator" {print $0}' uzivatele.txtCo se děje:
$4 == "programator" = podmínka (4. sloupec = programator){print $0} = vypiš celý řádek$0 znamená celý řádekNaučíte se řadit obsah souborů podle různých kritérií.
Základní abecední řazení:
sort uzivatele.txtCo se děje:
sort seřadí řádky abecedněŘazení podle druhého sloupce (věk):
sort -t',' -k2 -n uzivatele.txtCo se děje:
-t',' = oddělovač polí je čárka-k2 = třiď podle 2. sloupce (věk)-n = numeric (číselné třídění, ne abecední)Sestupné řazení:
sort -t',' -k2 -n -r uzivatele.txtCo se děje:
-r = reverse (obrácené pořadí - od největšího)Kombinace: seřadit programátory podle věku:
grep "programator" uzivatele.txt | sort -t',' -k2 -nCo se děje:
| (roura) propojí výstup grep se vstupem sortNaučíte se základní textové náhrady a úpravy.
Nahrazení textu (zobrazení, bez uložení):
sed 's/Praha/Prague/' uzivatele.txtCo se děje:
sed = stream editor (proudový editor)s/ = substitute (nahraď)s/Praha/Prague/ = nahraď "Praha" za "Prague"Nahrazení všech výskytů na řádku:
sed 's/programator/developer/g' uzivatele.txtCo se děje:
g na konci = global (všechny výskyty na řádku)Uložení změn do nového souboru:
sed 's/programator/developer/g' uzivatele.txt > uzivatele_novy.txtSmazání prázdných řádků:
sed '/^$/d' system.logCo se děje:
/^$/ = regulární výraz pro prázdný řádek (^ = začátek, $ = konec)d = delete (smaž)Zobrazení pouze řádků 2-4:
sed -n '2,4p' uzivatele.txtCo se děje:
-n = nezobrazuj automaticky všechny řádky2,4p = vypiš (print) řádky 2 až 4Vytvoříte komplexnější zpracování dat pomocí propojení více příkazů.
Nejstarší programátor:
grep "programator" uzivatele.txt | sort -t',' -k2 -n -r | head -n 1Co se děje:
grep vyfiltruje programátorysort -t',' -k2 -n -r seřadí podle věku sestupněhead -n 1 vezme pouze první řádek (nejstarší)Počet ERROR záznamů v logu:
grep -c "ERROR" system.logVšechny unikátní města:
cut -d',' -f3 uzivatele.txt | sort -uCo se děje:
cut -d',' -f3 extrahuje třetí sloupec (města)sort -u seřadí a ponechá jen unikátní hodnoty (unique)Vytvoření reportu - počet lidí v každém městě:
cut -d',' -f3 uzivatele.txt | sort | uniq -cCo se děje:
cut -d',' -f3 extrahuje městasort seřadí (nutné pro uniq)uniq -c spočítá počet výskytů každé hodnotyPrůměrný věk (pokročilé):
awk -F',' '{sum += $2; count++} END {print "Prumerny vek:", sum/count}' uzivatele.txtCo se děje:
sum += $2 sečte všechny věkycount++ počítá řádkyEND se provede po zpracování všech řádkůPŘIHLASTE SE O KONTROLU K UČITELCE
Připravte si následující informace k prezentaci:
| Příkaz | Účel |
|---|---|
grep "text" soubor | Vyhledání textu v souboru |
grep -i | Vyhledání bez rozlišení velikosti |
grep -v | Inverzní vyhledání (řádky bez textu) |
grep -n | Zobrazení čísel řádků |
grep -c | Počítání výskytů |
cut -d',' -f1,2 | Extrakce sloupců |
awk -F',' '{print $1}' | Pokročilé zpracování sloupců |
sort | Abecední řazení |
sort -n | Číselné řazení |
sort -r | Obrácené řazení |
sort -u | Unikátní hodnoty |
uniq -c | Počítání duplicit |
sed 's/old/new/g' | Nahrazení textu |
head -n 5 | Prvních 5 řádků |
tail -n 5 | Posledních 5 řádků |
wc -l | Počet řádků |
Nejčastější slova v souboru:
cat soubor.txt | tr ' ' '\n' | sort | uniq -c | sort -rn | headVelikost každého souboru v adresáři:
ls -lh | awk '{print $5, $9}'Filtrace log souboru podle data:
grep "2024-03-01" system.logExport výsledků do souboru:
grep "ERROR" system.log > chyby.txt| Výraz | Význam | Příklad |
|---|---|---|
. | Libovolný znak | gr.p najde "grep", "grup" |
^ | Začátek řádku | ^Error najde řádky začínající "Error" |
$ | Konec řádku | end$ najde řádky končící "end" |
* | 0 a více výskytů | bo*k najde "bk", "bok", "book" |
[abc] | Znak a, b nebo c | [Pp]raha najde "Praha" i "praha" |
[0-9] | Libovolná číslice | [0-9]+ najde čísla |
| (pipe/roura) propojuje výstup jednoho příkazu se vstupem druhéhowc -l soubor spočítá řádky v souboruhead zobrazí začátek souboru, tail konectail -f soubor sleduje soubor v reálném čase (skvělé pro logy)nano soubor nebo vim souborpříkaz >> souborcsvkit