Κανονικές παραστάσεις (regular expressions)
Πολλές φορές θέλουμε να εκτελέσουμε μια εντολή σε περισσότερα από ένα αρχεία ή ακόμη και σε μια ομάδα αρχείων που έχουν συγκεκριμένα χαρακτηριστικά, όπως π.χ. ονόματα που έχουν συγκεκριμένη κατάληξη ή περιέχουν συγκεκριμένα γράμματα. Στην περίπτωση που πρόκειται για λίγα αρχεία δεν υπάρχει ιδιαίτερο πρόβλημα να τα συμπληρώσουμε με το χέρι. Αν πρόκειται όμως για δεκάδες ή και εκατοντάδες αρχεία, αυτό δεν είναι ιδιαίτερα πρακτικό και φιλικό.
Για το σκοπό αυτό επινοήθηκαν οι κανονικές παραστάσεις (regular expressions). Χρησιμοποιώντας ειδικούς μεταχαρακτήρες (χαρακτήρες μπαλαντέρ ή wildcards είναι μερικές από τις ονομασίες που έχουν), μπορούμε να ορίσουμε ένα συγκεκριμένο μοτίβο κειμένου το οποίο εφαρμόζεται σε μια λίστα τμημάτων κειμένου. Όποιο από τα τμήματα του κειμένου ταιριάζει στο μοτίβο, γίνεται αποδεκτό. Τα τμήματα αυτά μπορούν να είναι ονόματα αρχείων ή καταλόγων, λέξεις ή ακόμη και φράσεις κειμένου.
Ένα απλό παράδειγμα αφορά τη χρήση του μεταχαρακτήρα “*”. Για να αναφερθούμε σε όλα τα αρχεία του καταλόγου /var/log, αρκεί να δώσουμε /var/log/*, ενώ για όλα αρχεία που έχουν την κατάληξη log, αρκεί να δώσουμε /var/log/*.log.
Στον ακόλουθο πίνακα αναφέρονται οι κυριότεροι μεταχαρακτήρες και η χρήση τους. Σημείωνουμε ότι μπορούν να χρησιμοποιηθούν εξίσου στο κέλυφος για την αντιστοίχιση σε ονόματα αρχείων καθώς και σε επεξεργαστές κειμένου όπως sed, vi, ed και ex αλλά και στις εντολές grep, ωστόσο υπάρχουν ορισμένες διαφορές σε κάθε περίπτωση.
Μεταχαρακτήρας
Λειτουργία
*
Ταυτοποιείται με μηδέν ή περισσότερες εμφανίσεις οποιουδήποτε χαρακτήρα.
?
Ταυτοποιείται με μόνον ένα οποιονδήποτε χαρακτήρα.
^
Αν βρίσκεται στην αρχή της κανονικής παράστασης, τότε αντιστοιχεί στην αρχή της γραμμής κειμένου, αλλιώς απεικονίζεται σαν κανονικός χαρακτήρας. Δηλαδή η κανονική παράσταση ^chapter*, αντιστοιχεί σε όλες τις γραμμές που αρχίζουν με chapter.
$
Αν βρίσκεται στο τέλος της κανονικής παράστασης, τότε αντιστοιχεί με το τέλος της γραμμής κειμένου, αλλιώς απεικονίζεται σαν κανονικός χαρακτήρας .
[set]
Υποδηλώνει ένα σύνολο χαρακτήρων. μπορεί να έχει τις εξής μορφές:
[c1c2c3...] ταυτοποιείται με οποιονδήποτε από τους χαρακτήρες του συνόλου c1, c2 ,c3, ...
[c1-c2] ταυτοποιείται με οποιονδήποτε χαρακτήρα στο σύνολο ASCII (ή οποιαδήποτε κωδικοποιήση ισχύει στο σύστημα) που έχει τιμή ανάμεσα στις τιμές των χαρακτήρων c1, c2. Για παράδειγμα η παράσταση [a-zA-Z] παριστάνει οποιονδήποτε χαρακτήρα από το λατινικό αλφάβητο, αλλά όχι αριθμητικούς χαρακτήρες ή άλλα σύμβολα.
[^set] ταυτοποιείται με την άρνηση του συνόλου set. Για παράδειγμα το [^a-zA-Z] υποδηλώνει οποιονδήποτε χαρακτήρα εκτός από το λατινικό αλφάβητο (δηλαδή περιλαμβάνει και αριθμητικούς χαρακτήρες και άλλα σύμβολα).
{w1, w2, w3, ...}
Ταυτοποιείται με οποιαδήποτε από τις λέξεις w1, w2, w3, ...
\
Επισημαίνει το μεταχαρακτήρα που ακολουθεί, δηλαδή του αφαιρεί την ειδική λειτουργία και τον τυπώνει ως κανονικό χαρακτήρα. Για παράδειγμα, η παράσταση “*file\?” περιλαμβάνει το “?” ως κανονικό χαρακτήρα και αντιστοιχεί σε ονόματα όπως “thisfile?” ή “anotherfile?” αλλά όχι “somefiles”.
Χρειάζεται μεγάλη προσοχή στη χρήση των μεταχαρακτήρων, ειδικά του “*“ και όταν προσπαθείτε να διαγράψετε αρχεία. Για παράδειγμα ή εντολή rm -rf * σβήνει κάθε αρχείο μέσα στον τρέχοντα κατάλογο αλλά και στους περιεχόμενους καταλόγους!
Active forum topics
- Wake up from suspend mode failed
- Οργάνωση στις μεταφράσεις των ελληνικών στο Debian.
- απορια σχετικα με nvidia440
- πρόβλημα εγκατάστασης nvidia driver GTS250.
- kernel 2.6.38 για squeeze
- Gnome3
- 2 μήνες σπασμένο το upgrade σε unstable [SOLVED]
- Οι χρήστες του Internet Explorer είναι χαζοί;
- Debian Lenny + Nvidia drivers
- εγκατασταση usb cosmote
New forum topics
Νέοι χρήστες
- kountp
- Adonthegreat
- giorgos_m
- prodromos
- airmaik
Οι πιο πρόσφατες καταχωρίσεις blog.
- Fosscomm 2012
- armhf officially into Debian!
- back from UDS/Linaro Connect...
- FTF is over, Linaro Interview
- straight from FTF 2011, San Antonio...
- Όσο μεγαλώνεις μαθαίνεις...
- Emdebian 2011 Sprint report, Genesi Europe store goes online...
- Θεσσαλονίκη - open source ERP workshop
- Χρήσιμο URL για Flash Cards και Linux filesystems
- Cambridge, UK, ARM HQ for Emdebian 2011 Sprint