Content is user-generated and unverified.

Praktický návod: Zpracování textových souborů v Linuxu

Cíl cvičení

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.


Krok 1: Přihlášení do systému

Uživatelské jméno: kali
Heslo: kali

Jste přihlášeni jako standardní uživatel s právem sudo.


Krok 2: Vytvoření testovacích dat

Vytvoříte soubory s testovacími daty, se kterými budete pracovat.

Vytvoření souboru se seznamem uživatelů:

bash
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
EOF

Co se děje:

  • cat > přesměruje vstup do souboru
  • << EOF zahájí víceřádkový vstup (končí slovem EOF)
  • Vytváříte CSV-like soubor (pole oddělená čárkami)
  • Formát: Jméno,Věk,Město,Pozice

Vytvoření log souboru:

bash
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
EOF

Ověření vytvořených souborů:

bash
ls -l *.txt *.log

Krok 3: Vyhledávání v souborech pomocí grep

Naučíte se efektivně vyhledávat text v souborech.

Vyhledání konkrétního slova:

bash
grep "Praha" uzivatele.txt

Co se děje:

  • grep vyhledá všechny řádky obsahující slovo "Praha"
  • Výsledkem jsou pouze řádky, které obsahují hledaný text

Vyhledání bez rozlišování velkých/malých písmen:

bash
grep -i "PRAHA" uzivatele.txt

Co se děje:

  • -i = ignore case (ignoruj velikost písmen)
  • Najde "Praha", "praha", "PRAHA" atd.

Zobrazení čísel řádků:

bash
grep -n "programator" uzivatele.txt

Co se děje:

  • -n = zobraz číslo řádku, kde byl text nalezen
  • Užitečné pro lokalizaci v delších souborech

Počítání výskytů:

bash
grep -c "programator" uzivatele.txt

Co se děje:

  • -c = count (spočítej počet řádků s výskytem)
  • Výsledkem je pouze číslo, nikoliv text

Inverzní vyhledávání (řádky NEOBSAHUJÍCÍ text):

bash
grep -v "Praha" uzivatele.txt

Co se děje:

  • -v = invert (obrať výběr)
  • Zobrazí všechny řádky, které text "Praha" NEOBSAHUJÍ

Vyhledání v log souboru:

bash
grep "ERROR" system.log

Zobrazí pouze chybové záznamy.


Krok 4: Filtrování sloupců pomocí cut a awk

Naučíte se extrahovat konkrétní části z textových řádků.

Extrakce pouze jmen (první sloupec):

bash
cut -d',' -f1 uzivatele.txt

Co 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:

bash
cut -d',' -f1,2 uzivatele.txt

Co se děje:

  • -f1,2 = zobraz první a druhý sloupec

Použití AWK pro pokročilejší zpracování:

bash
awk -F',' '{print $1, $4}' uzivatele.txt

Co 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ů:

bash
awk -F',' '$4 == "programator" {print $0}' uzivatele.txt

Co se děje:

  • $4 == "programator" = podmínka (4. sloupec = programator)
  • {print $0} = vypiš celý řádek
  • $0 znamená celý řádek

Krok 5: Třídění dat pomocí sort

Naučíte se řadit obsah souborů podle různých kritérií.

Základní abecední řazení:

bash
sort uzivatele.txt

Co se děje:

  • sort seřadí řádky abecedně
  • Výchozí řazení je podle celého řádku

Řazení podle druhého sloupce (věk):

bash
sort -t',' -k2 -n uzivatele.txt

Co 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í:

bash
sort -t',' -k2 -n -r uzivatele.txt

Co se děje:

  • -r = reverse (obrácené pořadí - od největšího)

Kombinace: seřadit programátory podle věku:

bash
grep "programator" uzivatele.txt | sort -t',' -k2 -n

Co se děje:

  • | (roura) propojí výstup grep se vstupem sort
  • Nejprve vyfiltrujeme programátory, pak je seřadíme

Krok 6: Úprava textu pomocí sed

Naučíte se základní textové náhrady a úpravy.

Nahrazení textu (zobrazení, bez uložení):

bash
sed 's/Praha/Prague/' uzivatele.txt

Co se děje:

  • sed = stream editor (proudový editor)
  • s/ = substitute (nahraď)
  • s/Praha/Prague/ = nahraď "Praha" za "Prague"
  • Změní pouze první výskyt na řádku
  • Výsledek se vypíše, ale soubor zůstane nezměněný

Nahrazení všech výskytů na řádku:

bash
sed 's/programator/developer/g' uzivatele.txt

Co se děje:

  • g na konci = global (všechny výskyty na řádku)

Uložení změn do nového souboru:

bash
sed 's/programator/developer/g' uzivatele.txt > uzivatele_novy.txt

Smazání prázdných řádků:

bash
sed '/^$/d' system.log

Co se děje:

  • /^$/ = regulární výraz pro prázdný řádek (^ = začátek, $ = konec)
  • d = delete (smaž)

Zobrazení pouze řádků 2-4:

bash
sed -n '2,4p' uzivatele.txt

Co se děje:

  • -n = nezobrazuj automaticky všechny řádky
  • 2,4p = vypiš (print) řádky 2 až 4

Krok 7: Pokročilé kombinace příkazů

Vytvoříte komplexnější zpracování dat pomocí propojení více příkazů.

Nejstarší programátor:

bash
grep "programator" uzivatele.txt | sort -t',' -k2 -n -r | head -n 1

Co se děje:

  • grep vyfiltruje programátory
  • sort -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:

bash
grep -c "ERROR" system.log

Všechny unikátní města:

bash
cut -d',' -f3 uzivatele.txt | sort -u

Co 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ě:

bash
cut -d',' -f3 uzivatele.txt | sort | uniq -c

Co se děje:

  • cut -d',' -f3 extrahuje města
  • sort seřadí (nutné pro uniq)
  • uniq -c spočítá počet výskytů každé hodnoty

Průměrný věk (pokročilé):

bash
awk -F',' '{sum += $2; count++} END {print "Prumerny vek:", sum/count}' uzivatele.txt

Co se děje:

  • sum += $2 sečte všechny věky
  • count++ počítá řádky
  • END se provede po zpracování všech řádků
  • Vypočítá průměr

Krok 8: Kontrola učitelkou ⭐

PŘIHLASTE SE O KONTROLU K UČITELCE

Připravte si následující informace k prezentaci:

  1. Vytvořené soubory (uzivatele.txt, system.log)
  2. Seznam všech programátorů (pomocí grep)
  3. Uživatele seřazené podle věku (od nejstaršího)
  4. Počet ERROR záznamů v log souboru
  5. Seznam unikátních měst
  6. Demonstrace jedné vlastní kombinace příkazů

Shrnutí naučených příkazů

PříkazÚčel
grep "text" souborVyhledání textu v souboru
grep -iVyhledání bez rozlišení velikosti
grep -vInverzní vyhledání (řádky bez textu)
grep -nZobrazení čísel řádků
grep -cPočítání výskytů
cut -d',' -f1,2Extrakce sloupců
awk -F',' '{print $1}'Pokročilé zpracování sloupců
sortAbecední řazení
sort -nČíselné řazení
sort -rObrácené řazení
sort -uUnikátní hodnoty
uniq -cPočítání duplicit
sed 's/old/new/g'Nahrazení textu
head -n 5Prvních 5 řádků
tail -n 5Posledních 5 řádků
wc -lPočet řádků

Užitečné kombinace příkazů

Nejčastější slova v souboru:

bash
cat soubor.txt | tr ' ' '\n' | sort | uniq -c | sort -rn | head

Velikost každého souboru v adresáři:

bash
ls -lh | awk '{print $5, $9}'

Filtrace log souboru podle data:

bash
grep "2024-03-01" system.log

Export výsledků do souboru:

bash
grep "ERROR" system.log > chyby.txt

Regulární výrazy - základy

VýrazVýznamPříklad
.Libovolný znakgr.p najde "grep", "grup"
^Začátek řádku^Error najde řádky začínající "Error"
$Konec řádkuend$ 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

Poznámky a tipy

  • Symbol | (pipe/roura) propojuje výstup jednoho příkazu se vstupem druhého
  • Příkaz wc -l soubor spočítá řádky v souboru
  • Příkaz head zobrazí začátek souboru, tail konec
  • Příkaz tail -f soubor sleduje soubor v reálném čase (skvělé pro logy)
  • Pro editaci souborů použijte nano soubor nebo vim soubor
  • Výstup můžete přidat na konec souboru: příkaz >> soubor
  • Pro zpracování CSV souborů existuje specializovaný nástroj csvkit
Content is user-generated and unverified.
    Praktický návod: Zpracování textových souborů v Linuxu | Claude