A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Podobné dokumenty
Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

Regulární výrazy. Filtry grep, sed a awk.

Program grep. predn_05.doc

awk programovatelný filtr

Regulární výrazy a grep

Úvod do Operačních Systémů

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Proměnné a parametry. predn_08.odt :00:38 1

Úvod do Operačních Systémů

PROGRAMOVÁNÍ V SHELLU

C2110 Operační systém UNIX a základy programování

ČVUT FIT: BI-SKJ: Perl

Sekvenční a podmíněné provádění

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

Nastroje na zpracovani textu:

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Programovací jazyk Pascal

Úvod do Operačních Systémů

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

Úvod do UNIXu. Libor Forst

Tahák na UOS 2008/2009

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Úvod do Operačních Systémů

VISUAL BASIC. Práce se soubory

PSK3-9. Základy skriptování. Hlavička

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úvod do Operačních Systémů

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

LINUX přesměrování a roury

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Střední odborná škola a Střední odborné učiliště, Hořovice

grep a regulární výrazy

NPRG030 Programování I, 2010/11

Řídicí struktury. alg3 1

Úvod do UNIXu. Okruh č. 4 - vi, regulární výrazy, grep a sed. Jakub Galgonek. verze r2. inspirováno materiály Davida Hokszy

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5

Skripty - úvod. Linux - skripty 2

NPRG030 Programování I, 2016/17 1 / :58:13

Operační systémy. Cvičení 4: Programování v C pod Unixem

Základy algoritmizace a programování

Úvod do programování - Java. Cvičení č.4

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Tahák na UOS 2008/2009 Přehled (zkrácená verze)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Regulární výrazy. Vzory

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Sada 1 - Základy programování

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Úvod do programovacích jazyků (Java)

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Rozšíření ksh vůči sh při práci s proměnnými

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Příkaz finger. # finger sam Login: sam Name: Sam Greenfield Directory: /home/sam Shell: /bin/tcsh Last login Sun Dec 25 14:47 (EST) on tty2 No Plan.

Konstruktory překladačů

Cvičení předmětu BI PUN (Pokročilé Unixové Nástroje)

Úvod do Operačních Systémů

Základní příkazy OS UNIX

Základní příkazy pro práci se soubory

Basic256 - úvod do programování Příklady. ing. petr polách

Základní příkazy UNIXu (Linuxu)

Konečný automat. Jan Kybic.

AWK. Programovací jazyk textových manipulací

Inovace bakalářského studijního oboru Aplikovaná chemie

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

FILTRY V GNU/LINUXU ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Úvod do Operačních Systémů

Úvod, jednoduché příkazy

1.0 OS Unix Historie. Architektura. Zpracování příkazové řádky.

Úvod do UNIXu. Jirka Boháč Gymnázium Jaroslava Seiferta 2003/2004

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Úvod do programování. Lekce 1

Práce se soubory. Základy programování 2 Tomáš Kühr

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Paměť počítače. alg2 1

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Seznámení se shellem, textové editory numerické výpočty

Algoritmizace a programování

Operační systéme II cvičení

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

6. Příkazy a řídící struktury v Javě

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Zápis programu v jazyce C#

6 Příkazy řízení toku

Transkript:

A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk

sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů. Jednotlivé řádky jsou čteny ze standardního vstupu nebo ze souboru, provádí nad nimi jednotlivé příkazy a vypíší se na standardní výstup. -n potlačí implicitní kopírování vstupu na výstup (to co se má vytisknou musí být explicitně určeno příkazem p) -f skript (soubor skript musí obsahovat seznam příkazů) -r pracuje s rozšířenými regulárními výrazy Formát příkazu: [adresa1 [,adresa2]] příkaz [parametry] Příkazy: p(rint) vypíše řádku na výstup d(delete) zruší řádku s/re1/re2/volby nahradí text, který odpovídá vzoru RE1, řetězcem RE2 q(uit) ukončí běh A7B38UOS Úvod do operačních systémů - cvičení 6 2

sed adresy, print/delete I Výpis prvních 10 řádků (head) cat -n /etc/passwd sed '11,$d' cat -n /etc/passwd sed -n '1,10p' Výpis posledních 10 řádků (tail) sed -n $((`wc -l </etc/passwd`-10)),\$p /etc/passwd Výpis řádků obsahujících RE (grep) sed -n /root/p /etc/group Výpis řádků neobsahujících RE (grep -v) sed /root/d /etc/group A7B38UOS Úvod do operačních systémů - cvičení 6 3

sed adresy, print/delete II Výpis řádků od case do esac sed -n '/^case/,/^esac/p' /etc/init.d/cups Výpis začátku souboru do prvního prázdného řádku sed '/^$/,$d' /etc/init.d/cups sed -n '1,/^$/p' /etc/init.d/cups sed '/^$/q' /etc/init.d/cups A7B38UOS Úvod do operačních systémů - cvičení 6 4

sed náhrady v textu I Náhrada prvního znaku ls -l /etc \ sed 's/^-/file:/' \ sed 's/^d/ dir:/' \ sed 's/^l/link:/' \ sed 's/^p/pipe:/' ls -l /etc sed 's/^-/file: /;s/^d/ dir: /; s/^l/link: /;s/^p/pipe: /' A7B38UOS Úvod do operačních systémů - cvičení 6 5

sed náhrady v textu II Náhrada prvního slova man na řádku za!!man!! man man sed 's/\<man\>/!!man!!/' Náhrada druhého slova man na řádku za!!man!! man man sed 's/\<man\>/!!man!!/2' Náhrada všech slov man na řádku za!!man!! man man sed 's/\<man\>/!!man!!/g' Výpis pouze těch řádků, kde došlo k náhradě man za!!man!! man man sed -n 's/\<man\>/!!man!!/gp'... kde došlo k náhradě bez ohledu na velikost písmen man man sed -n 's/\<[mm][aa][nn]\>/!!man!!/gp' A7B38UOS Úvod do operačních systémů - cvičení 6 6

sed náhrady textu + Obalení čísel do <number: > man man sed 's/\([0-9][0-9]*\)/<number: \1>/g' Změna formátu výpisu linků (pouze linků) ls -l /etc sed -n \ 's/^l.* \([^ ]*\) -> \([^ ]*\)/Link: \1 (\2)/p' A7B38UOS Úvod do operačních systémů - cvičení 6 7

awk a nawk I awk [přepínače] [program] [prom=hod...] [soubory] Programovatelný filtr vytvořený autory: Aho, Weinberger, Kernighan. Původní verze se jmenovala awk, rozšířená verze pak nawk (na některých systémech lze rozšířenou verzi najít pod původním názvem awk). Jednotlivé řádky jsou čteny ze standardního vstupu nebo ze souboru, pokud odpovídají zadanému vzoru, provede se nad nimi příslušný program. Pokud není vzor specifikován, provede se program nad každou řádkou. Na řádku se pohlíží jako na posloupnost položek $1, $2,...,$NF ($0 = celá řádka). Implicitním oddělovačem položek je mezera/tabelátor (lze změnit přepínačem F nebo proměnnou FS). Struktura příkazu programu: [vzor] [{ akce }] A7B38UOS Úvod do operačních systémů - cvičení 6 8

awk - vzory Typy vzorů: Vzor BEGIN END výraz Začátek, konec Typy výrazů: Kdy se provede akce před zpracováním první řádky ze vstupu po zpracováním poslední řádky ze vstupu pro řádky vyhovující danému výrazu od první řádky splňující výraz začátek až do první řádky splňující výraz konec regulární výraz (ve formátu pro egrep) logický výraz (0 nebo prázdný řetězec = false, jinak true) A7B38UOS Úvod do operačních systémů - cvičení 6 9

Logické výrazy awk logické výrazy, proměnné tvořeny pomocí operátorů jako v jazyce C relační operátory: >, >=, <, <=, ==,!=, ~,!~ (řetězec odpovídá/neodpovídá danému vzoru) matematické operátory: +, -, *, /, %,^, ++, -- logické operátory: &&,,! Proměnné použití je podobné jako v jazyce C deklarují se použitím Některé předdefinované proměnné $n hodnota n-té položka z aktuálního řádku ( $0 = celá řádka ) NF počet položek v aktuálním řádku NR pořadová číslo aktuální řádky FS vstupní oddělovač položek na řádce OFS výstupní oddělovač položek na řádce A7B38UOS Úvod do operačních systémů - cvičení 6 10

Výpis prvních 10 řádků (head) cat -n /etc/passwd awk 'NR<=10' cat -n /etc/passwd awk 'NR==1,NR==10' awk - příklady Výpis posledních 10 řádků (tail) awk NR\>=$((`wc -l </etc/passwd`-10)) /etc/passwd Výpis řádků obsahujících RE (grep) awk /root/ /etc/group Výpis řádků neobsahujících RE (grep -v) awk '!/root/' /etc/group Z výstupu ypcat passwd výběr položek s UID 1000-9999 ypcat passwd awk -F: '$3>=1000 && $3<=9999' A7B38UOS Úvod do operačních systémů - cvičení 6 11

awk podmíněné příkazy, cykly, funkce Podmíněný příkaz if (výraz) { příkazy1} [ else { příkazy2} ] Cykly for ( i=min; i<=max; i++ ) { příkazy } for ( j in pole ) { příkazy } while ( výraz ) { příkazy } do { příkazy } while ( výraz ) break # předčasné ukončení cyklu continue # předčasné ukončení aktuální iterace cyklu Předdefinované funkce printf("řetězec" [,hodnoty]) sin(), sqrt(), log(), exp(),... length(), match(), split(), substr(), sub(),... tolower(), toupper(),... A7B38UOS Úvod do operačních systémů - cvičení 6 12

awk - příklady Výběr a změna pořadí jednotlivých položek /etc/passwd awk 'BEGIN { FS=":"; OFS=":" } { print $3,$1,$5 }' /etc/passwd Nalezení uživatele s nejdelším jménem ypcat passwd awk -F: ' { if (length($5) > max) { max=length($5); user=$1; name=$5 } } END { print user ":" name " (" max ")" }' Výpis uživatelů ve skupině fuse nawk -F: ' /^fuse/ { items=split($4,a,",") for (i=1; i<=items; i++) print a[i] }' /etc/group A7B38UOS Úvod do operačních systémů - cvičení 6 13

Formátovaný výpis uživatelů Korn shellu awk -F: ' BEGIN { print "Uzivatele /bin/sh shellu:" for (d=0; d<=60; d++) printf "-"; printf "\n" } $7 ~ /\/sh/ { if (length($1)<=7) tab="\t\t"; else tab="\t" print $1 tab $5 sh++ } END { for (d=0; d<=60; d++) printf "-"; printf "\n" print "Celkem " sh " z " NR " uzivatelu" }' /etc/passwd awk - příklady+ A7B38UOS Úvod do operačních systémů - cvičení 6 14