Sed: Porovnání verzí
Smazaný obsah Přidaný obsah
m řádková verze {{Wikiknihy}} do odkazů; kosmetické úpravy |
m typograficky poupraveno |
||
Řádek 1:
{{DISPLAYTITLE:sed}}
{{Různé významy|tento=počítačovém programu}}
<tt>'''sed'''</tt> (zkratka pro '''''s'''tream '''ed'''itor'') je jednoduchý, ale výkonný [[počítačový program]], sloužící k
== Popis ==
Sed je často nazýván neinteraktivním textovým editorem. Od konvenčních textových editorů se odlišuje způsobem, jakým je vstup zpracováván. Místo toho, aby jednou prošel seznam příkazů a
Sedovské příkazy vychází z
▲Sed je často nazýván neinteraktivním textovým editorem. Od konvenčních textových editorů se odlišuje způsobem, jakým je vstup zpracováván. Místo toho, aby jednou prošel seznam příkazů a každý z nich aplikoval na celý text, uložený v [[elektronická paměť|paměti]] [[počítač]]e, prochází sed textovým souborem jednou a na každý řádek aplikuje seznam příkazů. Protože je v jednu chvíli v paměti jen jediný řádek, dokáže sed zpracovat i opravdu velké textové soubory.
▲Sedovské příkazy vychází z editoru [[Ed (editor)|ed]] a většina příkazů funguje podobně, avšak v obrácené formě. Například: příkaz '''25d''' znamená ''je-li toto řádek číslo 25, pak jej smaž (a nevypisuj)'', namísto ''jdi na řádek 25 a smaž ho'', jako tomu bylo v editoru ed. Důležitou výjimku tvoří příkazy pro kopírování a přesun, které zasahují do více řádků a nemají tedy v sedu přímý ekvivalent. Namísto nich přináší sed zvláštní [[vyrovnávací paměť]] (buffer) a dodatečné příkazy pro práci s ním. Například příkaz edu pro zkopírování řádku 25 na řádek 76 ('''25t76''') by byl v sedu proveden pomocí dvou příkazů ('''25h; 76g''') pro uložení řádku do bufferu až do chvíle, kdy bude znovu použit.
Následující příklad ukazuje typické využití sedu:
Řádek 13 ⟶ 12:
sed -e 's/původní/nový/g' vstupniSoubor > vystupniSoubor
'''s''' znamená nahraď (substitute), '''g''' znamená globálně, tj. každý vyhovující výskyt na řádku bude nahrazen. Za prvním lomítkem začíná [[regulární výraz]] pro vyhledání. Za druhým lomítkem je výraz pro jeho nahrazení. Příkaz náhrady ('''s///''') je nejsilnější a
V
generuj_data | sed -e 's/x/y/'
Na vytvořená data je aplikován malá změna, spočívající v
Více nahrazení či jiných příkazů lze uložit například do souboru ''nahrada.sed'' a
sed -f nahrada.sed vstupniSoubor > vystupniSoubor
Vedle nahrazování jsou možné i
sed -e '/^ *$/d' vstupniSoubor
V
* ^ vyhovuje začátku řádku
Řádek 37 ⟶ 36:
* [] vyhovuje kterémukoli ze znaků uvedených v []
Komplexní konstrukce jsou v
Sed je jedním z
Sed a
Jazyk sedu nemá proměnné a
[[GNU]] sed přináší několik nových funkcí, jako je okamžitá editace souborů (tj. nahrazení původního souboru výsledkem aplikace sedovského programu). Okamžité editace se často využívá namísto skriptů ed, např.:
Řádek 56 ⟶ 55:
q
Také existuje rozšířená verze sedu, nazvaná ''Super-sed'' ([[ssed]]), zahrnující regulární výrazy kompatibilní s
== Ukázka kódu ==
Přestože sed obvykle pracuje s
▲Přestože sed obvykle pracuje s jedním řádkem, následující příklad odebere znak nového řádku z věty tam, kde následující řádek začíná mezerou.
Mějme následující text:
Řádek 69 ⟶ 67:
můj pes se jmenuje Frank
A
sed 'N;s/\n //g;P;D;'
Řádek 85 ⟶ 83:
== Literatura ==
* ''awk
▲* ''awk & sed: Příručka pro dávkové zpracování textu'', Helmut Herold, [http://cpress.cz Computer Press], ISBN 80-251-0309-9, [[2004]]
== Externí odkazy ==
* {{Wikiknihy|kniha=sed}}
* [http://www.cs.hmc.edu/qref/sed.html Velmi stručný úvod]
* [http://sed.sourceforge.net Hlavní zdroje sedovských skriptů a
* [http://sed.sourceforge.net/sedfaq.html Často kladené otázky (FAQ)]
* [http://sed.sourceforge.net/sed1line.txt Užitečné sedovské skripty online]
* [http://sed.sourceforge.net/sed1line_cz.html Užitečné sedovské skripty online
* [http://www.pement.org/sed/ Domovská stránka s
* [http://sed.sourceforge.net/grabbag/scripts/turing.txt Článek popisující implementaci Turingova stroje v
* [http://sed.sourceforge.net/grabbag/scripts/turing.sed Implementace Turingova stroje v
* [http://www.gnu.org/directory/text/editors/super-sed.html Super-sed]
* [http://aurelio.net/sed/sokoban/ Hra Sokoban, napsaná v sedu]
|