Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu 2010-2011 2.



Hasonló dokumentumok
Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

A sed folyamszerkesztő

BASH SCRIPT SHELL JEGYZETEK

Operációs Rendszerek II. labor. 2. alkalom

Szkriptnyelvek. 1. UNIX shell

OPERÁCIÓS RENDSZEREK II GYAKORLAT

A héj vezérlő szerkezetei I.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK

Operációs Rendszerek II. labor alkalom

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Bash Shell Programozás. 1. oldal

Hálózatok építése és üzemeltetése

S z á m í t ó g é p e s a l a p i s m e r e t e k

Munka állományokkal, könyvtárakkal I.

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

AWK programozás, minták, vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Operációs rendszerek gyak.

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Operációs Rendszerek Gyakorlat

AWK programozás Bevezetés

Operációs rendszerek 1.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

AWK programozás, minták, vezérlési szerkezetek

Csatlakozás a pandora.inf.elte.hu-re Linux alapparancsok

Rendszerprogramozás Linux környezetben

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Reguláris kifejezések 1.

chmod umask chown, chgrp

Számítógép Architektúrák. 4. Gyakorlat

Gyors tippek linuxra

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

Bevezetés a UNIX rendszerekbe

Az Ügyfélkapu és a magyarorszag.hu

PCLinuxOS Magazine május

INFORMATIKAI ALAPISMERETEK

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Linux bevezető (jegyzet)

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Lekérdezések az SQL SELECT utasítással

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Szűrők Reguláris kifejezések, AWK

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Az Intel gyorsindító készlete a Linux*-hoz v1.2 Gyorstájékoztató. Megrendelési szám: C

Hálózati adminisztráció Linux (Ubuntu 8.04) 12. gyakorlat

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

BASH script programozás II. Vezérlési szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Az alábbiakban néhány Linux parancsra látunk példákat, feladatokat.

A sed folyamszerkesztő

INFORMATIKAI ALAPISMERETEK

2. gyakorlat Állapot alapú modellezés Megoldások

Néhány kihagyhatatlan Linux tipp és trükk. Ezeket a tippeket olvasóink osztották meg velünk

2015, Diszkrét matematika

Országzászlók (2015. május 27., Sz14)

Felhasználói kézikönyv Biztonsági útmutató adminisztrátorok számára

PYTHON. Avagy hosszú az út a BioPythonig

IPv6 alapú otthoni LAN hálózat kialakítása

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

...a Tamana névszerkezeti összehasonlítása a véletlenen alapul, tessék bizonyítani az ellenkezőjét, mert addig elméletem igaz!

Powershell 1. gyakorlat

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

C# feladatok gyűjteménye

Telepítési dokumentáció. Naviscon Informatikai Zrt Budapest, Montevideó utca 16/b.

Az Állami Autópálya Kezelő Zrt. Általános Szerződési Feltételei e-matricát értékesítő viszonteladók részére. 4. számú melléklet

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

1. Alapok. #!/bin/bash

Bevezetés a C++ programozásba

A shell vezérlő szerkezetei I.

Segédlet Digitális írástudás - Operációs rendszerek Szilágyi Róbert S.

SuliXerver 3.5 TELEPÍTÉSE GYORSAN ÉS EGYSZERŰEN

148 feladat ) + ( > ) ( ) =?

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Geometria I.

Operációs rendszerek 1.

4. Fejezet : Az egész számok (integer) ábrázolása

Operációs rendszerek MINB240/PMTRTNB230H

HALMAZOK TULAJDONSÁGAI,

Ministerul Educației și Cercetării Științifice Olimpiada de Tehnologia Informației etapa județeană 21 martie 2015

23. Kombinatorika, gráfok

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v és újabb modul verziókhoz Dokumentumverzió:

MobilArm-2 / 2a. 1. A GSM modul működése: Riasztóközpontokhoz illeszthető GSM távirányító és távjelző modul 2 bemenettel és relés kimenettel

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

Kezelési útmutató myphone Halo 2

Reguláris vagy szabályos kifejezések

EGÉSZSÉGÜGYI DÖNTÉS ELŐKÉSZÍTŐ

Blonde. Szépségszalon, Szolárium, Spa, Fitness. Ügyviteli Rendszer. Funkcionális Specifikáció. Verzió 1.1

Átírás:

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed Windisch Gergely windisch.gergely@nik.uni-obuda.hu 2010-2011 2. félév

Reguláris kifejezések Reguláris kifejezésekkel lehet keresni egy szövegben hatékony módon. Pl: tegyük fel, hogy megváltozik a telefonszámunk, és át szeretnénk írni minden fájlban (fejléces papír, névjegykártya stb). Sima keres cserél nem jó, mert van, ahol 063011111111 van írva, máshol 363011111111, (3630..), 36-30/1-11111 stb. Reguláris kifejezéssel ez megoldható.

grep Keresni tudunk vele Fájlban keresés grep filenév string, vagy cat filenév grep string Szabványos bemenetére sorokat küldhetünk, azt fogja kiírni, amelyikben megtalálható a keresett kifejezés pl: listázzuk ki a könyvtárban található mp3 fájlokat ls -l grep 'mp3' grep -v : negáció - csak akkor írja ki a sort, ha nem szerepel benne a keresett kifejezés Szabályos kifejezések: grep -E, vagy egrep

grep hasznos kapcsolók: -v : negált keresés -c : az eredményhalmaz számosságát adja vissza -h : több fájlban kereséskor megadja a fájlnevet is -i : kis- és nagybetű érzékenységet kapcsolja ki -w : csak egész szóra keres -n : sor számát elhelyezi a találat mellett Fájlban keresés cat file grep... - hordozhatóbb grep '..' file - gyorsabb

regexp alapok Regular expressions, reguláris kifejezések, szabványos kifejezések karakterek: önmaguknak felelnek meg.. egrep 'alma' speciális karakterek: \ kell eléjük, ha őket keressük *., [ ] \ ^ $ : ezek a speciális jelek. (\*, \. stb.) ^ (önmagában): mintát a sor elejére igazítja cat telefon egrep '^ki' $: mintát a sor végére igazítja cat telefon egrep 'os$' ^barmi$ : konkrét sor keresése '\<': szó eljeje, '\>': szó vége

Feladat Listázzuk ki csak a könyvtárakat, grep segítségével

ls -l egrep '^d' Feladat megoldása

Feladat A /etc/debconf.conf fájlból szedjük ki a kikommentezett sorokat, és az eredményt tároljuk el egy fájlban. (egyszerű linuxos konfigurációs fájl, a # jellel kezdődő sorok kommentek)

Feladat megoldás cat /etc/debconf.conf egrep -v '^#' > ujfile

. : Minden karakterre (kivéve újsor) illeszkedik. (..) egrep '...' : olyan sort keres, amiben legalább három tetszőleges karakter van. Ha olyan sort keresnénk, amiben három pont van: (..) egrep '\.\.\.' Ha olyan sort keresünk, ami pontosan három karakerből áll: (..) egrep '^...$'

Feladat Listázza ki az összes olyan szót a /usr/share/dict/ könyvtárbeli szótárfájlból, ami c betűvel kezdődik, f betű a vége, és 5 betűből áll

Feladat megoldás grep '\<c...h\>' /usr/share/dict/words

[ ] : A benne levő betűk közül valamelyiket keresi k[oae]s: kos, kas, kes ^[abc]: a, b vagy c-vel kezdődő sorok ^[^abc]: negálás, sorok, amik NEM a, b-vel kezdődnek [ - ]: tartomány (angol abc szerint) [a-z] : kisbetűk [A-Z]: nagybetűk [a-za-z]: kicsi és nagy betűk [0-9]: számok

Feladat Írjunk olyan shell scriptet, ami kilistázza azokat a fájlokat, amelyek nagybetűvel kezdődnek

Feladat megoldás ls -1 egrep '^[A-ZÁÉŐÚÓÜÖÍ]'

Jelentésmódosító jelek (1) A korábbiakban bemutatottakkal együtt használható? : az előtte álló karakter opcionális (0 vagy 1) colou?r - színt keres brit és amerikai szövegben * : az előtte levő karakterből tetszőleges darabszámot keres (nullát is!) (...) egrep '1[0-9]*' - olyan sorokat keres, amelyekben van olyan szám, ami 1-gyel kezdődik + : az előtte levő karakterből keres tetszőleges számút, de legalább 1-et. (...) grep '1\+' (kell a \, hogy ne stringként kezelje)

Jelentésmódosító jelek (2) { }: pontos számú egyezést vár el (..) egrep '[0-9]\{3\}' : pontosan 3 szám (..) egrep '[0-9]\{3,\}' : legalább 3 szám (..) egrep '[0-9]\{4,6\}' : 4-6 között ( ) : csoportokat képezhetünk. A jelentésmódosítók a csoportokra vonatkoznak. (..) egrep '[\(cd\)\(ef\)]' (..) egrep '(ab)\+' Olyan sorokat keres, ahol az ab többször előfordul : vagy kapcsolat (..) egrep 'asztal\(on\ ban\ hoz\ ra\ nak\)'

Ide tartozó parancsok grep sed beérkezett szövegben keres parancssoros szövegszerkesztő awk find szövegszerkesztő, szebb parancsok fájlokat keres

sed parancssoros szövegszerkesztő program... sed 'program' sed 'program' bejovofajl > kimenofajl soralapú, az aktuális feldolgozott sor a mintatérbe kerül amennyiben a kimenetet fájlban szeretnénk tárolni, ne ugyanaz legyen, mint a bemenet! sed 'program' feldolgozando > feldolgozando bash kapásból nullázza a kimeneti fájlt, a sed pedig csak utána fog nekiállni a munkának

sed p : mintatér kiírása cat akarmi sed 'p' minden sor kétszer jelenik meg -n kapcsolóval kiiktatható az eredeti kiírás címzés: cat akarmi sed -n '5p' : csak az ötödik sort írja ki cat akarmi sed -n '1,5 p' : 1-5. sorokat írja ki d: mintatér törlése ugyanaz a paraméterezése, mint a p-nek cat akarmi sed '1,5 d' : az 1-5 sorokat nem jeleníti meg (fájlba átirányítva kvázli kitörlődik)

sed s: szöveg helyettesítés formátum: cat akarmi sed s/eztcsereld/emerre/ csak az első találatot cseréli ki (a sorban) összeset: cat akarmi sed s/eztcsereld/emerre/g az elválasztó karakter lehet bármi. Célszerű olyat, ami nem szerepel a cserélendőben s/http:\/\/www.index.hu\//http:\/\/www.nik.hu/ s!http://www.index.hu!http://www.nik.hu!

Feladat Készítsen egy shell scriptet, ami egy fájlban kicserél valamit valami másra. Ezzel a feladattal kicsit még dolgozni kéne :-)

További parancsok cut : szétvágja a kimenetet oszlopokra. pl: csoportok kilistázása: cat /etc/group cut -d: -f 1 awk: szövegszerkesztő wc: awk '{print $3}' - a harmadik oszlop kivágása A cut nem kezeli egybe a szóközöket - ls -l cut -d' ' -f7 nem jó kimenet karaktereit, sorait számolja.. grep wc -l : hány találat volt head, tail : a kimenet első (utolsó) néhány sorát írja ki messages.log új bejegyzései: cat m.log tail tac: szöveges fájl kiírása, fordított sorrendben friss logbejegyzések megjelenítésére

Feladat Irassuk ki a rendszerrel a felhasználóink számát.

cat /etc/passwd wc -l Feladat megoldás De mi van az inaktív felhasználókkal? (első nem szóköz karakter # - kikommentezett userek) csak azokat listázzuk ki, akik nincsenek kikommentezve

Megoldás 2 cat /etc/passwd egrep -v '^ *#' wc -l

Feladat Készítsen script fájlt, ami bemeneti paraméterként egy fájl nevét kapja, és kiírja a fájl tulajdonosát.

Feladat megoldás #!/bin/bash tulaj=`ls -l "$1" cut '-d ' -f3` echo "A fájl tulajdonosa: $tulaj"

Feladat megoldás (kicsit szebb) #!/bin/bash if [ -e "$1" ] then tulaj=`ls -l "$1" cut '-d ' -f3` echo "A fájl tulajdonosa: $tulaj" else echo "Nem létező fájl" fi

Feladat Készítsen shell scriptet, ami megállapítja a paraméterben megadott fájl tulajdonosát, és amennyiben az a hallgato, akkor átadja az állományt a root felhasználónak.

#!/bin/bash Feladat megoldás if [ "`ls -l $1 cut '-d ' -f3`" = "hallgato" ] then chown root $1 fi

Bővítse ki az előző feladatot, hogy csak akkor adja át a rootnak, amennyiben a tulajdonos az aktuális felhasználó.

Feladat megoldás #!/bin/bash if [ "`ls -l $1 cut '-d ' -f3`" = "$USER" ] then chown root $1 fi

Bővítse ki az előző feladatot úgy, hogy második paraméterként megadható legyen az új felhasználó, aki a fájlt megkapja, de csak akkor hajtsa végre a program az átadást, amennyiben a megadott felhasználó létezik a rendszerben.

Feladat megoldás #!/bin/bash if [ "`cat /etc/passwd cut -d: -f1 egrep -c "^$2$"`" -eq 1 ] then if [ "`ls -l $1 cut '-d ' -f3`" = "$USER" ] then chown $2 $1 fi else echo No such user. You idiot. fi