Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

vyuka:sed [2017/01/18 17:13]
admin vytvořeno
vyuka:sed [2023/11/15 20:54]
Řádek 1: Řádek 1:
-Sed znamená ''stream editor''. To znamená, že vykonává svou práci proudově: vstup (nebo soubor) bere řádek po řádce a koná nad nimi zadané příkazy. 
- 
-Příkaz může (ale nemusí) být uvozen parametrem -e. Je nanejvýš vhodné příkaz celý vložit do apostrofů - budeme tu totiž používat regulární výrazy, a nechceme aby se interpretovaly [http://adasek.cz/linux/metaznaky_shellu/ metaznaky shellu]. 
- 
-===Příkazy=== 
-Nejjednodušší příkaz je ''p''. Vytiskne řádku. 
-<code bash> 
-#takto použitý příkaz vytiskne každou řádku dvakrát. 
-sed -e 'p' 
- 
-#parametr -n zabrání implicitnímu vypisování řádek - takže vypíše každou řádku pouze jednou. 
- sed -n -e 'p' 
-</code> 
- 
-Již jsme používali příkaz ''s'', neboli ''substitute'' - zaměň. 
- 
-<code bash> 
-#Zamění ahoj za nazdar. Pokud jsou ale na řádce dvě ahoj, zamění pouze první... 
- 
-sed -e 's/ahoj/nazdar/' 
-#...pro zaměnění všech musíme ještě použít parametr g - global: 
-sed -e 's/ahoj/nazdar/g' 
-</code> 
- 
-Vidíme, že příkaz s má v sobě ''vždy'' tři zpětná lomítka. Oddělují: 
-* ''s'' jako označení příkazu 
-* regulární výraz, odpovídající části textu, již chceme zaměnit 
-* to, čím ji chceme nahradit ... to už není regulární výraz - ale můžeme zde použít \1 \2 ... ''zpětné reference'', zvláštní význam má i & (vloží celý nahrazovaný řetězec) 
-* parametry příkazu - například ''g'',''i'' - nehleď na velikost písmen, ''p'' - vytiskne řádku, na které proběhla záměna, ''w soubor'' - zapíše do souboru. 
- 
-Příklady: 
-<code bash> 
-# uzávorkování každého velkého písmenka: 
-sed -e 's/[A-Z]/(&)/g' 
- 
-# to samé jako grep pattern 
-sed -n 's/pattern/&/p' 
-</code> 
- 
-===Další příkazy=== 
-  * ''q'' ... ukončit   
-  * ''d'' ... smaže řádek 
-  * ''a'' ... přidat řádek (za aktuální) 
-  * ''i'' ... vložit řádek (před aktuální) 
-  * ''c'' ... změnit řádek (za text následující po mezeře) 
-  
-Příkazy se oddělují středníkem, nebo koncem řádky.  
----- 
-===Omezovací příkazy - ''restriction commands''=== 
-Píše se před příkaz, oddělen od něj mezerou. 
-Může omezovat dle pořadí řádků, nebo regulárním výrazem uzavřeným mezi lomítky (''/regexp/'' ) 
-Chceme-li negovat, použijeme '''!''' před příkazem 
- 
-<code bash> 
-#smaže třetí řádku 
-sed -e '3 d' 
- 
-# Smaže první číslo na všech řádkách začínajících A 
-sed -e '/^A/ s/[0-9][0-9]*//' 
- 
-# smaže první až pátou řádku 
-sed -e '1,5 d' 
- 
-# smaže vše krom třetí řádky 
-sed -e '3 !d' 
-</code> 
-                                
-==== úloha ==== 
-Chceme z konfiguračního souboru zobrazit pouze to podstatné - tedy zbavit se komentářů. 
-Komentář začíná znakem #. 
-Zjednodušení zadání: přefiltrovat konfigurák tak, že smažeme řádky začínající # 
- 
-  - Změň jméno "Josef" na "Pepa" 
-  - Smaž první tři řádky 
-  - Vypiš řádky 5 až 10 
-  - Smaž řádky které obsahují "Olomouc"  
-  - Vypiš všechny lidi, kteří mají narozeninu v listopadu, nebo prosinci 
-  - Přidej tři hvězdičky na konec řádek začínajících "Petr" 
-  - Řádkům, které mají nulový den nebo měsíc narozen změň tuto hodnotu na "1" 
-  - Změň řádku obsahující "Martin" na "Martin odjel do USA" 
-  - Změň narození Ilony na 14.12.1981 . Nepoužij k tomu původní datum. 
-  - Napiš sed script (parametr -f file) který: 
-    * nad první řádku (insert) dá "SEZNAM LIDI" 
-    * vymaže data narození pokud se ten člověk narodil v roce 1980 
-    * za poslední řádku ($) dá (append) "KONEC SOUBORU" 
- 
-<code> 
-Marie Zemanová,Praha,8.6.1986,+420640502304,20386@hotmail.com 
-Martin Humlíček,Olomouc,6.5.1990,+420643531701,18594@hotmail.com 
-Emilie Fejlová,České Budějovice,18.0.1983,+420934608096,22163@post.cz 
-Helena Rousová,Praha,21.2.1991,+420118560678,12075@seznam.cz 
-Jan Drozd,Ústí nad Labem,23.3.1985,+420824538067,25869@o2mail.cz 
-Petr Ducheček, Pardubice,14.6.1986,+420109786897,21330@o2mail.cz 
-Petra Bandurová,Brno,18.3.1994,+420679916072,18899@volny.cz 
-Ludmila Rudlová,Zlín,15.0.1982,+420069714707,27135@volny.cz 
-Oldřich Kobza,Havířov,22.7.1991,+420924071657,24265@volny.cz 
-Zlata Schánilcová,České Budějovice,15.7.1984,+420851059285,26452@post.cz 
-Josef Dvořák,Pardubice,23.4.1990,+420260167244,29970@post.cz 
-Jaroslava Potočková,Ostrava,27.2.1982,+420382962474,32471@xmail.cz 
-Svatoslav Scholze,Olomouc,26.3.1991,+420526571498,3055@volny.cz 
-Eva Husarová,Praha,0.4.1984,+420038236014,30274@yahoo.com 
-Zdeněk Jedlička,Hradec Králové,1.7.1983,+420433684645,27640@xmail.cz 
-Ilona Hoblíková,Plzeň,26.0.1980,+420579591009,18889@o2mail.cz 
-Jiří Kočař,Plzeň,25.9.1991,+420026453762,28033@xmail.cz 
-Ondřej Černošek,Praha,27.0.1986,+420033686476,9667@gmail.com 
-František Šembera,Olomouc,19.6.1981,+420128225404,6151@gmail.com 
-Jana Honsová,Liberec,20.0.1985,+420534677156,1581@yahoo.com 
-Josef Čirý,Praha,1.4.1992,+420860928577,18172@yahoo.com 
-</code> 
  
Nahoru