Obsah

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:

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:

5. Praktické využití v automatizaci

Stream editor je klíčem k tzv. Infrastructure as Code.

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).

Zpět na Linux