Fixed Character strings

Σχετικά έγγραφα
Λειτουργικά Συστήματα 5η εργαστηριακή άσκηση

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

Εισαγωγή στα Λειτουργικά Συστήματα

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Regular Expressions ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Γλωσσική Τεχνολογία. String Handling Regular Expressions

Ενότητα 3 1 Compiler Lecture Notes 1.0 documentation

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Shell Scripts: loops / if / test

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Προγραμματισμός Διαδικτύου

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44.

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

ΣΕΛΙ Α 1 ΚΕΦΑΛΑΙΟ 1 - ΑΡΧΙΚΑ

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τµήµα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήµατα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 7ο Εργαστήριο

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Λειτουργικά Συστήματα

Τι είναι το Flex. Περιγραφή ενός λεξικογραφικού αναλυτή στη γλώσσα του lex/flex. Γενικά Χαρακτηριστικά του Flex

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 10/11/2015, 22:00

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

P( n, k) P(5,5) 5! 5! 10 q! q!... q! = 3! 2! = 0! 3! 2! = 3! 2!

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

char name[5]; /* define a string of characters */

Visual Basic Βασικές Έννοιες

Εισαγωγικά Παραδείγματα: Παρατηρήσεις:

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

HY118- ιακριτά Μαθηµατικά

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

for for for for( . */

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ


ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

Η γλώσσα προγραμματισμού C

Εισαγωγή στην πληροφορική

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Προγραµµατισµός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

Κεφάλαιο 5ο: Εντολές Επανάληψης

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

LAB1 ΛΥΣΗ. Ευρετήριο απαντήσεων ανά τµήµα: Ευρετήριο απαντήσεων ανά µήνυµα λάθους/προειδοποίησης

Λειτουργικά Συστήματα

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

Μερικές άλλες χρήσιμες εντολές

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Επανάληψη για τις Τελικές εξετάσεις

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Λύσεις για τις ασκήσεις του lab5

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Η γλώσσα προγραμματισμού C

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Διάλεξη 6 Εργαλεία Ωφελιμότητας Unix: Sed

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΓΡΗΓΟΡΗ ΜΑΝΑΡΙΩΤΗ Ερωτήσεις Εµπέδωσης Αξιολόγησης για το EXCEL

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 4/11/2014, 22:00

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

scanf() scanf() stdin scanf() printf() int float double %lf float

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 7 ο Εργαστήριο. Διανύσματα-Πίνακες 2 ο Μέρος

Transcript:

ιαχείριση κειµένων µε τις grep, fgrep, egrep http://repfiles.kallipos.gr/html_books/79/0_chapter.html#sec_regexp ιαδραστικά σχηµατα.,.,.,.7,.8,.0,. και όλο το ο εργαστήριο στο.7 Ασκήσεις για εξάσκηση Find a pattern µε την grep (global regular expression print) Το grep είναι ένα utility πρόγραµµα που ψάχνει ένα ή περισσότερα από ένα αρχεία για γραµµές που περιέχουν strings ενός συγκεκριµένου πρότυπου/µοτίβου (pattern). Οι γραµµές που το ταιριάζουν (match the pattern) εµφανίζονται στην οθόνη. Η πιο απλή περίπτωση είναι ένα fixed string pattern - σταθερής ακολουθίας χαρακτήρων. Υπάρχουν όµως και πιο πολύπλοκα που καλούνται regular expressions. Το fgrep (fast ή fixed) utility µόνο για fixed character strings. Το egrep (extended) utility για full regular expressions. Fixed Character strings vassik@aetos:~/xunix/lab$ tail -0 /etc/passwd >pass vassik@aetos:~/xunix/lab$ cat pass dpapadop:x::08:papadopoulos Dimitrios:/home/student/x9899/dpapadop:/bin/bash oserkeli:x:7:0:serkelidis Orestis:/home/student/x9900/oserkeli:/bin/bash gtegos:x:9:000:tegos Georgios:/home/staff/it/gtegos:/bin/bash gquery:x:0:99:keramopoulos Euclid:/home/staff/ektaktoi/gquery:/bin/bash isinanis:x::0:sinanis Ioannis:/home/student/x/isinanis:/bin/bash gantoni:x::0:antoniadis Georgios:/home/student/x/gantoni:/bin/bash Στο αρχείο pass ψάχνουµε το string student, και µετά ψάχνουµε το string staff vassik@aetos:~/xunix/lab$ grep student pass dpapadop:x::08:papadopoulos Dimitrios:/home/student/x9899/dpapadop:/bin/bash oserkeli:x:7:0:serkelidis Orestis:/home/student/x9900/oserkeli:/bin/bash isinanis:x::0:sinanis Ioannis:/home/student/x/isinanis:/bin/bash κτλ vassik@aetos:~/xunix/lab$ grep staff pass gtegos:x:9:000:tegos Georgios:/home/staff/it/gtegos:/bin/bash gquery:x:0:99:keramopoulos Euclid:/home/staff/ektaktoi/gquery:/bin/bash vassik@aetos:~/xunix/lab$ tail - /etc/passwd >pass Στα δύο αρχεία pass και pass ψάχνουµε το string student vassik@aetos:~/xunix/lab$ grep student Στο αρχείο pass ψάχνουµε το string "Papadopoulos Dimitrios" // κτλ οι άλλες τελευταίες γραµµές pass pass Παίρνουµε µερικές σειρές από το /etc/passwd και δηµιουργούµε το αρχείο pass grep pattern [file ] pass:gdimitro:x:70:0:dimitropoulos_elezis Georgios_Konstantinos:/home/student/x/gdimitro:/bin/bash pass:gdimitro:x:70:0:dimitropoulos_elezis Georgios_Konstantinos:/home/student/x/gdimitro:/bin/bash vassik@aetos:~/xunix/lab$ grep "Papadopoulos Dimitrios" pass dpapadop:x::08:papadopoulos Dimitrios:/home/student/x9899/dpapadop:/bin/bash Ψάχνει (στο αρχείο/α) να βρει γραµµές που κάνουν match το pattern To string όταν περιέχει κενό πρέπει να µπεί µέσα σε (διπλά και ακόµη καλύτερα µονά) εισαγωγικά Μια εντολή της µορφής grep student staff pass θα έψαχνε στα αρχεία staff και pass να βρεί το string student (το ο όρισµα είναι το string, ενώ τα υπόλοιπα, εδώ o & o όρισµα, ονόµατα αρχείων) Αν δεν θέλουµε να βλέπουµε στο αποτέλεσµα τα ονόµατα των αρχείων βάζω option -h (header) []

Regular Expressions in Text pattern (Κανονικές εκφράσεις) Eκτός από ένα fixed string, µπορούµε στην grep να δώσουµε και ένα pattern (ή template) κειµένου που θέλουµε να βρεθεί π.χ. να βρεθούν όλες οι λέξεις µε γράµµατα που αρχίζουν από d, ή αυτές που έχουν ψηφία στο τέλος κτλ. (το αποτέλεσµα θα είναι πάντα γραµµές, που κάνουν match το pattern) Τέτοιες pattern (ή template) λέγονται κανονικές εκφράσεις (Regular Expressions) και «δουλεύουν» όπως τα wildcards που είδαµε στα ονόµατα των αρχείων και των directories δηλ. χρησιµοποιούν κάποιους χαρακτήρες µε ειδικό νόηµα τους metacharacters. Εστω το παρακάτω αρχείο µε όνοµα grape που έχει 7 γραµµές: 7 How long, how long, in infinite Pursuit Better be merry with the fruitful Grape..Than sadden after none, or bitter, fruit.. How long... η γραµµή η γραµµή η γραµµή (έχει tab) η γραµµή (έχει κενά) η γραµµή (έχει κενό) η γραµµή (έχει tab) 7 η γραµµή (δεν περιέχει κενό) και θέλω π.χ. να βρω από το αρχείο grape τις γραµµές που αρχίζουν µε How και τις κενές (τα ^How και ^$ είναι κανονικές εκφράσεις ή RE ή regex ) vassik@aetos:~/xunix/lab$ grep --color ^How grape How long, how long, in infinite Pursuit vassik@aetos:~/xunix/lab$ grep -n ^$ grape 7: vc option --color χρωµατίζει µε π.χ. κόκκινο χρώµα τα ταιριάζοντα pattern option -n (number) δίνει και το νούµερο της γραµµής Τι σηµαίνει Π.χ. Γραµµές που Ν ο γρ. Σχόλια (fixed string) Ηοw έχουν τo How, Τα fixed που είδαµε πριν anchors Regular expressions ^ αρχή γραµµής ^How ξεκινούν µε τo How H η ξεκινά µε tab $ τέλος γραµµής uit$ τελειώνουν µε τo uit Η η έχει στο τέλος και µια τελεία ^$ κενές/άδειες γραµµές 7 Η η θα έχει κενά! '^How long $' έχουν το 'Ηow long ' - H η ξεκινά µε tab '^.' ξεκινούν µε κενό, Τα κενά λοιπόν παίζουν «ρόλο», vassik@aetos:~/xunix/lab$ grep -n '^ ' grape : Than sadden after none, or bitter, fruit. : vc πρέπει να µπαίνουν σε εισαγωγικά: Για να αντιγράψετε το αρχείο grape στο φάκελο που είστε: cp ~vassik/myunix/labs/lab0/grape. Το ^ είναι anchor µόνο στην αρχή, το $ µόνο στο τέλος, σε άλλο σηµείο χάνουν την µετασηµασία τους π.χ. το [^a] σηµαίνει δεν έχει a. []

Τι σηµαίνει pattern Γραµµές που Ν ο γρ. Σχόλια. ένας οποιοσδήποτε ' T....' έχουν λέξεις από Τ και, χαρακτήρας chars (κενό πριν/µετά) 7 Όπου υπάρχει κενό έχει βελάκι για να το τονίσει '^T....' ' T...$.' uit.$ ξεκινούν µε λέξη από Τ µετά chars (κενό µετά) τελειώνουν µε λέξη, από Τ και chars µετά (κενό πριν) τελειώνουνµε το uit και µετά έχουν χαρακτήρα - εν υπάρχουν. Η η ξεκινά µε κενά - εν υπάρχουν Αν στο τέλος της ης υπήρχε κενό ή τελεία θα έβγαινε και η η γρ. \ πριν από ένα metachar ακυρώνει το ειδικό νόηµά του uit\.$ τελειώνουνµε το uit και µετά έχουν τελεία ακυρώνει την µετασηµασία (που σηµαίνει οποιοσδήποτε χαρ/ρας) και ψάχνει για τελεία. ' fruit.' ' fruit\.' έχουν την λέξη fruit και µετά char (κενό πριν) έχουν την λέξη fruit και µετά τελεία (κενό πριν), αν θέλαµε µόνο λέξεις fruit δεν θα έχει επιθυµητό αποτέλεσµα 7 How long, how long, in infinite Pursuit Better be merry with the fruitful Grape Than sadden after none, or bitter, fruit. How long... αρχείο µε όνοµα grape Kλάσεις χαρακτήρων µε [ ] και [-] Μέσα στα [ ] καθορίζεται το σύνολο ή το διάστηµα των χαρακτήρων που ψάχνουµε : Τι σηµαίνει pattern Γραµµές που Ν ο γρ. Σχόλια [ ] χαρακτήρας από το [Tt]his έχουν τo This ή το this σύνολο µέσα στα [] ^[Tt]his ξεκινούν µε Τhis ή this - εν υπάρχουν ^[BHOT] ξεκινούν µε Β ή Η ή Ο ή Τ, η, η, η ξεκινούν µε κενά/tab [BT] που έχουν Β ή Τ,, [-] χαρακτήρας από το διάστηµα µέσα στα[] ^[B-T] ^[B-HO-T] ξεκινούν µε χαρακτήρα στο διάστηµα από Β έως Τ ξεκινούν µε χαρακτήρα στο διάστηµα από Β έως Η ή στο διάστηµα Ο έως Τ,, Εκτός από τον χαρακτήρα newline (τέλος γραµµής \n) Όταν πρόκειται για ολόκληρες «λέξεις» µπορεί να έχουν πριν ένα κενό, και µετά ή κενό ή κάτι άλλο πχ. 7 Στην περίπτωση T... λέξη θα θεωρηθεί πχ και το Τb που δεν είναι λέξη µε νόηµα!, κύττα πιο κάτω []

Τι σηµαίνει pattern Γραµµές που Ν ο γρ. Σχόλια [^] χαρακτήρας που δεν [^BT]h έχουν char διαφορετικό 8, Η option --color θα ανήκει στο σύνολο από Β,Τ και µετά h (ή βοηθήσει να κατανοηθεί έχουν h και πριν από αυτό καλύτερα µέσα στα [] ^[^BT] δεν έχουν ούτε B ούτε T) ξεκινούν µε χαρακτήρα που δεν είναι Β ή Τ,,,,, Η 7 η δεν έχει κάποιο χαρακτήρα ( 8 ) [^-] χαρακτήρας που δεν ανήκει στο διάστηµα µέσα στα [] [^B-T]h έχουν χαρακτήρα που δεν είναι από Β έως Τ και µετά h Η γραµµή έχει κενό και how (το κενό δεν είναι µέσα στο Β-Τ) Προσοχή στα κενά µπρος και πίσω από την λέξη που περικλείονται σε µονά εισαγωγικά ' [Tt][a-z][a-z][a-z] ' έχoυν λέξη από Τ ή t και άλλα γράµµατα µετά από a έως z (κενό πριν /µετά) ' [^Tt][a-z][a-z][a-z] ' λέξεις µε χαρ. & ο ος char δεν είναι Τ ή t (κενό πριν /µετά), Πιο καλό για λέξη, από το ' T....' που θεωρεί οτιδήποτε χαρ/ρα µετά το Τ, option --color θα βοηθήσει Αριθµοί [0] αριθµοί ή ή ή 0 [0-] αριθµοί στο διάστηµα 0- [-0] αριθµοί στο διάστηµα - ή 0 (και όχι από έως το 0) [-9][0-9] διψήφιοι αριθµοί Ο χαρακτήρας - Αν θέλουµε να ανήκει στο σύνολο των χαρακτήρων που ψάχνουµε και ο χαρακτήρας '-' αρκεί να τον βάλουµε στην αρχή 9 ή να άρουµε την σηµασία του µε \- (να µην µπερδευτεί µε το διάστηµα) π.χ. [-bm] σηµαίνει ο χαρακτήρας -, ή o χαρακτήρας b, ή o χαρακτήρας m Oι επεκταµένες (full) κανονικές εκφράσεις υποστηρίζονται από την εντολή egrep που είναι υπερσύνολο της grep. Η egrep αναζητεί όσα και η grep αλλά και RE µε επιπλέον µεταχαρακτήρες (π.χ. +,?, ). Closures { } Επαναλαµβανόµενα pattern µε την egrep Γενικά ένας αριθµός µέσα σε άγκιστρα π.χ. {} µετά από µια έκφραση καθορίζει τον αριθµό των φορών που η έκφραση (που προηγείται) θα επαναληφθεί π.χ. αν θέλω µια λέξη από Τ ή t και άλλα γράµµατα µετά από a έως z (κενό πριν, µετά) ' [Tt][a-z]{} ' ( αν δηλ. µετά το 'Τ' θέλω χαρακτήρες a-z αντί να γράψω [a-z][a-z][a-z], γράφω [a-z]{} ) closure H γενική φόρµα είναι {n,m} και σηµαίνει εµφανίσεις το λιγότερο n φορές και το περισσότερο m. Όταν δεν έχει m δηλ. {n} εννοεί ακριβώς n φορές. 8 Μια εντολή [^ΒΤ] θα δώσει τις γραµµές - δηλ.και την η, η γιατί δεν έχουν Β και την η που δεν έχει Τ 9 παρόµοια ισχύει και για τα [ και ] []

$ egrep --color '[Tt][a-z]{}' grape Better be merry with the fruitful Grape Than sadden after none, or bitter, fruit. $ egrep --color ' [Tt][a-z]{} ' grape Than sadden after none, or bitter, fruit. closure Συντ/φία Εµφανίσεις Σχόλια {,} από µια έως τρεις γενικότερα {n,m} {} τρεις γενικότερα {n} {0, } * καµία ή περισσότερες 0 υποστηρίζεται από σχεδόν όλες τις version της egrep (και την grep) {, } + µία ή περισσότερες 0 {0, }? καµία ή µία Ετσι σε ένα οποιοδήποτε αρχείο, π.χ. στο αρχείο grape, η εντολή $ egrep '.*' grape. ένας χαρακτήρας * {0, } + {, }? {0,} επαναλήψεις που σηµαίνει match ένα οποιοδήποτε char 0 έως άπειρες φορές, δίνει όλες τις γραµµές δηλαδή είναι ίδια µε την cat grape (αλλά η cat είναι πιο εύκολη και γρήγορη). Εναλλακτικές pattern µε την egrep ( ) RE RE egrep '(This That)' grape έχουν This ή Τhat γραµµή Options -v, -i, -y, -c, -l, -r -v (invert) εµφανίζονται εκτός από αυτές που ταιριάζουν -i,-y (ignore case) αγνόησε κεφαλαία µικρά -c (count) δίνει µόνο πλήθος γραµµών (που ταίριαξαν) -l (list) δίνει τα ονόµατα των matching αρχείων (ταίριασµα για περισσότερα από ένα αρχεία) -r (recursive) ψάχνει σε καταλόγους και υποκαταλόγους vassik@aetos:~/xunix/lab$ grep -v student gtegos:x:9:000:tegos Georgios:/home/staff/it/gtegos:/bin/bash gquery:x:0:99:keramopoulos Euclid:/home/staff/ektaktoi/gquery:/bin/bash pass Mερικά παραδείγµατα στο αρχείο µε όνοµα filetra Αρχείο filetra Eντολή Εξήγηση Αποτέλεσµα-γραµµές ra la la tra traaatratra tra tra tra egrep 't{,}' filetra egrep 'tra{,}' filetra egrep 'tra{}' filetra.. εµφανίσεις του t tr,.. εµφανίσεις του a tr και συνεχόµενα a όλες και η η η γραµµή egrep 'tra {,}' filetra tra,.. εµφανίσεις του κενό η ( η η δεν έχει κενό) oµαδοποίηση µε () egrep '(tra ){}' filetra συνεχόµενα tra κενό η γραµµή 0 Περισσότερες σηµαίνει πάρα πολλές (το συµβολίζω µε, χωρίς όµως να έχει την έννοια του άπειρου) Aν θέλετε να το αντιγράψετε στο φάκελο που είστε: cp ~vassik/myunix/labs/lab0/filetra. []

Μερικά παραδείγµατα στο αρχείο µε όνοµα fileab Αρχείο fileab Eντολή Εξήγηση Αποτέλεσµα ac ababcbabc abbc abbbc abcbc abcbcbc egrep '.*' fileab egrep 'a*' fileab egrep 'a?' fileab egrep 'a? ' fileab egrep 'a+' fileab Ένας χαρακτήρας εµφανίζεται 0.. To a εµφανίζεται 0.. To a εµφανίζεται 0.. To a εµφανίζεται 0.. µετά κενό To a εµφανίζεται.. καµία / δεν υπάρχει egrep -n 'ab+c' fileab egrep -n '(ab)+c' fileab egrep -n 'ab?c' fileab egrep -n 'a(bc)*' fileab egrep -n 'a(bc)?' fileab egrep -n 'a(bc)+' fileab a, επανάληψη b.., και c ab επανάληψη.., και c a, επανάληψη b 0.., και c a, επανάληψη bc 0.. a, επανάληψη bc 0.. a, επανάληψη bc.. όλες εκτός της ης η, η, η η, η, η, η η, η, η Οµαδοποιήσεις των RE (regex) Αρχείο fileab Παρενθέσεις ( ) τοποθετούνται στην κανονική έκφραση ώστε οι µεταχαρακτήρες πχ *, + ή?, να δράσουν στην ΟΜΑ Α αντί σε ένα µόνο χαρακτήρα. Για να επαναληφθούν κάποιες οµάδες regex µπορεί να χρησιµοποιηθεί η back reference \ ac ababcbabc abbc abbbc abcbc abcbcbc π.χ. egrep '(bc)\' fileab σηµαίνει επανάληψη της ης οµάδας (bc), δηλ. bcbc Επανάληψη της ης και της ης οµάδας Στο παρακάτω pattern: (RE)kati(RE)cd\lala\xy\ η oµάδα η οµάδα σηµαίνει REkatiREcdRElalaRExyRE µε RE και RE να είναι συγκεκριµένες κανονικές εκφράσεις Back Reference αναδρ/κή αναφορά \ η οµάδα \n n η οµάδα (..9) οµάδες είναι οι RE µέσα στις () egrep '(.)\' fileab egrep '(bc)\' fileab egrep '([bc])\' fileab egrep '([bc]{})\' fileab egrep '(b)[ac]\' fileab Επανάληψη ενός χαρακτήρα της οµάδας, ένα γράµµα συνεχόµενα φορές (bb) Επανάληψη bc Επανάληψη b,c δηλ. ή bb ή cc Όµοιο µε '([bc][bc])\' επανάληψη ή bb ή bc ή cc Επανάληψη b µε ενδιάµεσο ή a ή c γραµµές, γραµµές, γραµµές, γραµµές, γραµµές,, egrep '(.)(.)\\' fileab ος char, ος char, & επανάληψη του ου ου γραµµές,, []

Συνοπτικός πίνακας anchors ^ αρχή γραµµής $ τέλος γραµµής. ένας οποιοσδήποτε χαρακτήρας \ πριν από ένα metachar ακυρώνει το ειδικό νόηµά του [ ] χαρακτήρας από το σύνολο µέσα στα [] [-] χαρακτήρας από το διάστηµα µέσα στα[] [^] χαρακτήρας που δεν ανήκει στο σύνολο µέσα στα [] [^-] χαρακτήρας που δεν ανήκει στο διάστηµα µέσα στα [] * (0.. ) καµία ή περισσότερεςεµφανίσεις της προηγούµενης RE + (.. ) µία ή περισσότερες εµφανίσεις της προηγούµενης RE? (0..) καµία ή µία εµφανίσεις της προηγούµενης RE {,} (n..m) έως εµφανίσεις της προηγούµενης RE \ Επανάληψη της ης οµάδας RE (\ αντίστοιχα της ης..) ( ) Εναλλακτικές patterns Eπισηµαίνεται ότι Το ^ είναι anchor µόνο στην αρχή και το $ µόνο στο τέλος ενός pattern, σε άλλο σηµείο χάνουν την µετασηµασία τους π.χ. το ^[^a] σηµαίνει ξεκινά η γραµµή και δεν έχει a και το ^O.[^a] σηµαίνει ξεκινά µε Ο έχει µετά ένα χαρακτήρα και µετά δεν έχει a Options -v, -i, -y, -c, -l, -r -v (invert) εµφανίζονται εκτός από αυτές που ταιριάζουν -i,-y (ignore case) αγνόησε κεφαλαία µικρά -c (count) δίνει µόνο πλήθος γραµµών (που ταίριαξαν) -l (list) δίνει τα ονόµατα των matching αρχείων (ταίριασµα για περισσότερα από ένα αρχεία) -r (recursive) ψάχνει σε καταλόγους και υποκαταλόγους -n δείχνει και τον αριθµό της γραµµής του αρχείου --color χρωµατίζει αυτά που ταιριάζουν µε το pattern Εκτός από τον χαρακτήρα newline (τέλος γραµµής \n) [7]