====== Stream Editor (sed) ====== **Stream Editor** je nástroj určený k transformaci a filtrování textu, který protéká systémem jako proud dat (stream). Na rozdíl od běžných textových editorů nepracuje interaktivně; místo toho načítá data ze souboru nebo standardního vstupu, provede úpravy podle předem definovaných instrukcí a výsledek okamžitě odesílá dál. ===== 1. Princip fungování: Pattern Space ===== `sed` pracuje ve velmi specifickém cyklu: 1. **Načtení:** Přečte jeden řádek ze vstupu a uloží ho do dočasné paměti zvané **pattern space**. 2. **Zpracování:** Aplikuje na tento řádek všechny zadané příkazy (např. nahrazení textu). 3. **Výstup:** Upravený řádek vypíše na obrazovku (nebo do roury) a vymaže pattern space. 4. **Opakování:** Přejde na další řádek. ===== 2. Klíčové příkazy a operace ===== Kromě základního nahrazování (''s/''), které jsme již probrali, nabízí `sed` řadu dalších možností: ^ Příkaz ^ Význam ^ Příklad použití ^ | **a** (append) | Přidá text za aktuální řádek. | ''sed '2a Nový řádek' soubor'' | | **i** (insert) | Vloží text před aktuální řádek. | ''sed '1i Hlavička' soubor'' | | **c** (change) | Nahradí celý řádek novým textem. | ''sed '3c Změněný řádek' soubor'' | | **q** (quit) | Ukončí zpracování po určitém řádku. | ''sed '10q' soubor'' (vypíše prvních 10 řádků a skončí) | ===== 3. Adresování: Cílení na konkrétní řádky ===== `sed` nemusí provádět změny na všech řádcích. Můžete mu přesně říct, kde má operovat: * **Číslem řádku:** ''sed '5d' soubor'' (smaže pouze 5. řádek). * **Rozsahem:** ''sed '1,10s/A/B/''' (nahradí A za B pouze na prvních deseti řádcích). * **Regulárním výrazem:** ''sed '/ERROR/d' log.txt'' (smaže všechny řádky obsahující slovo ERROR). ===== 4. Pokročilá technika: Hold Space ===== Kromě hlavní paměti (pattern space) má `sed` ještě druhou, "odkládací" paměť zvanou **hold space**. To mu umožňuje provádět složité operace, jako je: * Prohození pořadí řádků. * Spojování více řádků do jednoho. * Vyhledávání vzorů, které přesahují jeden řádek. ===== 5. Praktické využití v automatizaci ===== Stream editor je klíčem k tzv. **Infrastructure as Code**. * **Změna konfigurace:** Hromadná změna portu ve všech souborech v ''/etc/nginx/''. * **Čištění dat:** Odstranění komentářů (řádků začínajících #) ze skriptů: ''sed '/^#/d' skript.sh''. * **Extrakce informací:** Získání IP adres z rozsáhlého výpisu síťového provozu. > **Tip:** Pokud používáte ''sed'' k úpravě cest (kde jsou lomítka), můžete místo klasického oddělovače ''/'' použít téměř jakýkoli jiný znak, například: ''sed 's|/usr/bin|/usr/local/bin|' ''. Tím se vyhnete nepřehlednému "escapování" lomítek (tzv. //Leaning Toothpick Syndrome//). [[it_encyklopedie:linux_rozcestnik|Zpět na Linux]]