Okruh č.4 Okruh č. 4 - vi, regulární výrazy, grep a sed verze 1.0.0-r2 inspirováno materiály Davida Hokszy
Textové editory Okruh č.4 vi(m) prastarý textový editor (1976) dostupný v podstatě na každém UNIXovém systému velmi mocný pro začátečníka dosti neintuitivní nutnost pamatovat si mnoho zkratek http://www.kit.tul.cz/ satrapa/docs/vim/ nano relativně intuitivní obsahuje vestavěnou nápovědu mcedit součást Midnight Commanderu velmi jednoduchý
Editor vim Okruh č.4 vim vim [-R] [+[N]] [+/vzor] [soubor] -R read-only (přepisuje pouze je-li přinucen ) +N kurzor bude umístěn na N-tý řádek + kurzor bude umístěn na poslední řádek +/vzor kurzor bude umístěn na první výskyt vzoru
Editor vi schéma práce Okruh č.4
Editor vi - pohyb Okruh č.4 [N]k [N]j [N]l [N]h [N]G [N]H [N]L posun o N řádek nahoru posun o N řádek dolů posun o N znaků dopředu posun o N znaků dozadu posun na N-tou (poslední) řádku posun na N-tou (první) řádku na obrazovce posun na N-tou (poslední) řádku na obrazovce od konce
Editor vi - značky Okruh č.4 mz označení pozice znakem Z `Z skok na místo pozice Z 'Z skok na začátek řádku pozice Z `` skok na místo před posledním skokem '' skok na začátek řádku před posledním skokem značky A-Z globální značky a-z lokální značky (platí jen v rámci jednoho souboru)
Okruh č.4 Editor vi přechod do vstupu i a I A o O s S C R zahájení editace před kurzorem zahájení editace za kurzorem zahájení editace na začátku aktuálního řádku zahájení editace na konci aktuálního řádku zahájení editace po vložení řádku před aktuální řádek zahájení editace po vložení řádku za aktuální řádek zahájení editace po smazání znaku zahájení editace po smazání obsahu řádku zahájení editace po smazání konce řádku zahájení editace v replace módu
Editor vi mazání Okruh č.4 x smazání textu pod kurzorem X smazání textu před kurzorem D smazání do konce řádku dd smazání řádku dw smazání slova smazaný text se ukládá do očíslovaných bufferů
Okruh č.4 Editor vi práce s buffery [N]p [N]P "np "np "zp "zp vložení N opakování (jednoho) bufferu za kurzor/řádek vložení N opakování bufferu před kurzor/řádek vložení n-tého posledního bufferu za kurzor/řádek vložení n-tého posledního bufferu před kurzor/řádek vložení bufferu pojmenovaného z za kurzor/řádek vložení bufferu pojmenovaného z před kurzor/řádek ["z]yy vložení řádky do bufferu (pojmenovaného z) ["z]ym vložení textu od kurzoru do místa daného příkazemm do bufferu (pojmenovaného z)
Editor vi další... Okruh č.4. opakování posledního příkazu u zruší poslední příkazy J spojení řádek zamění velké a malé písmeno pod kurzorem % skok na odpovídající závorku rz změní znak pod kurzorem za Z ^g info o poloze a stavu editovaného souboru z- posunutí (scroll) aktuálního řádku dolu z<lf> posunutí (scroll) aktuálního řádku nahoru
Okruh č.4 Editor vi hledání a nahrazení /vzor nalezení vzoru regulárního výrazu (pohyb pomocí n) :s/vzor/text/ nahradit výskyt vzor za text :s/vzor/text/g nahradit každý výskyt vzor (na aktuální řádce) za text :s/vzor/text/gc nahradit každý výskyt vzor (na aktuální řádce) za text a každý potvrdit (c = confirmation)
Editor vi - ukončení Okruh č.4 :q[!] ukončení bez uložení byly-li provedeny změny, pak! vynutí ukončení bez uložení :x[!] [soubor] ukončení s uložením byli-li provedeny změny při read-only, pak! vynutí ukončení :w[!] [soubor] uložení byli-li provedeny změny při read-only, pak! vynutí uložení
Okruh č.4 umožňují specifikovat množinu řetězců slouží k vyhledání textu odpovídajícího regulárnímu výrazu (vzoru) nahrazení textu odpovídajícího regulárnímu výrazu jiným textem specifikován pomocí znaků a metaznaků metaznak znak se speciálním významem (tzv. metavýznamem) metavýznam může být potlačen (pomocí zpětného lomítka - ) ve zvláštních případech mohou některé znaky stejným způsobem metavýznam naopak získat důvodem tohoto chování je zpětná kompatibilita
Okruh č.4 - jednoduché vyhledávání z znak z. libovolný znak [z 1 z 2 z 3 z 4 ] znak z uvedené množiny [^z 1 z 2 z 3 z 4 ] libovolný znak mimo uvedenou množinu [a-za-z] libovolný znak z daných rozsahů z ruší metavýznam znaku z zřetězení operátor nebo ( ) operátor přednosti
Okruh č.4 - skupiny znaků w znaky slova (ekvivalentní zápisu [a-za-z0-9]) W jakýkoliv znak kromě znaků slova [:alnum:] alfanumerický znak (uvádí se jako součást []) [:space:] mezera (uvádí se jako součást []) [:digit:] číslice (uvádí se jako součást [])
Okruh č.4 - kvantifikátory a buffery * libovolně-krát (i vůbec)? maximálně jedenkrát + alespoň jedenkrát {n } {m, } {m,n } právě n-krát alespoň m-krát alespoň m-krát, maximálně alespoň n-krát kvantifikátory jsou hladové (zachytí maximální možnou odpovídající sekvenci) (vzor ) N uložení textu odpovídajícího vzoru do bufferu použití N-tého bufferu
Okruh č.4 - hranice ^ začátek řádku $ konec řádku b začátek nebo konec slova < začátek slova > konec slova
Okruh č.4 grep, egrep [e]grep [-Enrvwx] [-e] vzor [soubor]... vyhledání regulárního výrazu v řádcích -E zapíná podporu rozšířených regulárních výrazů (= egrep) -n před každou řádku vypisuje její pořadové číslo -r adresář rekurzivně -v vyhledá řádky neobsahující slovo vyhovující podmínce -w shoda musí být celé slovo -x vyhledá řádky které přesně (jako celek) vyhovují podmínce
Okruh č.4 sed sed [-r] skript [soubor]... čte vstupní proud (defaultně po řádcích) a transformuje ho pomocí na výstupní -r zapíná podporu rozšířených regulárních výrazů
Okruh č.4 - nahrazování nahrazení prvního výskytu vzoru za text sed 's/vzor/text/' [soubor]... nahrazení všech výskytů vzoru za text sed 's/vzor/text/g' [soubor]... vypsání pouze řádků obsahujících vzor (po substituci) sed -n 's/vzor/text/p' [soubor]... -n na výstup implicitně nejdou žádné řádky vypsání řádků obsahujících vzor do souboru (po substituci) sed 's/vzor/text/w výstupní soubor' [soubor]... akce lze kombinovat
Okruh č.4 - skripty složení příkazů sed -e 's/a/a/' -e 's/b/b/' [soubor]... smazání řádky se vzorem sed '/vzor/ d' [soubor]... transformace sed 'y/abc/abc' [soubor]... přidání řádky před/za/místo řádky s výrazem sed '/vzor/ i new line text' [soubor]... sed '/vzor/ a new line text' [soubor]... sed '/vzor/ c new line text' [soubor]...
Okruh č.4 - omezení řádků omezení na jednu řádku sed 'n akce' [soubor]... sed '14 s/vzor/text/' [soubor]... omezení na množinu řádků sed 'n,m akce' [soubor]... sed '4,100 s/vzor/text/g' [soubor]... omezení řádek výrazy sed '/start/,/stop/ akce' [soubor]... sed '/vzor/ akce' [soubor]... sed '/start/,/stop/ s/vzor/text/' [soubor]... sed '/start/,/stop/ d' [soubor]...