Linux Regular Expression Tutorial: Grep Regex Example
⚡ Έξυπνη Σύνοψη
Οι κανονικές εκφράσεις του Linux είναι ειδικές ακολουθίες χαρακτήρων που αναζητούν δεδομένα και αντιστοιχίζουν σύνθετα μοτίβα σε εργαλεία όπως τα grep, sed και vi, χρησιμοποιώντας βασικές φόρμες, φόρμες με διαστήματα, εκτεταμένες φόρμες και φόρμες επέκτασης με αγκράφα για να φιλτράρουν το κείμενο με ακρίβεια.
Οι κανονικές εκφράσεις είναι ένα από τα πιο ισχυρά χαρακτηριστικά του Linux εργαλεία κειμένου, που σας επιτρέπουν να αντιστοιχίζετε, να φιλτράρετε και να μετασχηματίζετε δεδομένα με συμπαγή μοτίβα. Αυτή η σελίδα εξηγεί τις βασικές φόρμες, τις φόρμες με διαστήματα και τις εκτεταμένες φόρμες, καθώς και την επέκταση αγκυλών, με επεξεργασμένα παραδείγματα grep.
Τι είναι οι κανονικές εκφράσεις Linux;
Οι κανονικές εκφράσεις Linux είναι ειδικοί χαρακτήρες που βοηθούν στην αναζήτηση δεδομένων και στην αντιστοίχιση σύνθετων μοτίβων. Οι κανονικές εκφράσεις συντομεύονται ως 'regexp' ή 'regexp'. Χρησιμοποιούνται σε πολλά προγράμματα Linux, όπως π.χ. grep, bash, μετονομασία, sed και πολλά άλλα.
Τύποι κανονικών εκφράσεων
Για ευκολία κατανόησης, ας μάθουμε τους διαφορετικούς τύπους κανονικών εκφράσεων έναν προς έναν. Αυτή η σελίδα καλύπτει τις βασικές, τις διαστηματικές και τις εκτεταμένες κανονικές εκφράσεις και ολοκληρώνεται με την επέκταση των αγκυλών.
Βασικές κανονικές εκφράσεις
Μερικές από τις συνήθως χρησιμοποιούμενες εντολές που λειτουργούν με κανονικές εκφράσεις είναι οι tr, sed, viκαι grep. Ο παρακάτω πίνακας παραθέτει μερικές από τις βασικές κανονικές εκφράσεις.
| Σύμβολο | Περιγραφή |
|---|---|
| . | Αντικαθιστά οποιονδήποτε χαρακτήρα |
| ^ | Ταιριάζει με την αρχή μιας συμβολοσειράς |
| $ | Ταιριάζει με το τέλος μιας συμβολοσειράς |
| * | Αντιστοιχεί μηδέν ή περισσότερες φορές με τον προηγούμενο χαρακτήρα |
| \ | Αντιπροσωπεύει ειδικούς χαρακτήρες |
| () | Ομαδοποιεί κανονικές εκφράσεις |
| ? | Ταιριάζει ακριβώς με έναν χαρακτήρα |
Ας δούμε ένα παράδειγμα. Αρχικά, εκτελέστε την εντολή cat sample για να εμφανίσετε τα περιεχόμενα ενός υπάρχοντος αρχείου, όπως φαίνεται παρακάτω.
Στη συνέχεια, αναζητήστε περιεχόμενο που περιέχει το γράμμα 'a'. Το παρακάτω στιγμιότυπο οθόνης δείχνει ότι η εντολή grep επιστρέφει κάθε γραμμή που περιλαμβάνει το γράμμα 'a'.
Το σύμβολο καρέ '^' αντιστοιχεί στην αρχή μιας συμβολοσειράς. Το παρακάτω παράδειγμα αναζητά περιεχόμενο που ξεκινά με το γράμμα 'a'.
Φιλτράρονται μόνο οι γραμμές που ξεκινούν με τον χαρακτήρα. Οι γραμμές που δεν περιέχουν τον χαρακτήρα 'a' στην αρχή αγνοούνται.
Ας δούμε ένα άλλο παράδειγμα. Το παρακάτω στιγμιότυπο οθόνης δείχνει ξανά τα περιεχόμενα του δείγματος αρχείου πριν από το φιλτράρισμα κατά το τέλος μιας γραμμής.
Επιλέξτε μόνο τις γραμμές που τελειώνουν με το γράμμα 't' χρησιμοποιώντας την άγκυρα '$', όπως φαίνεται παρακάτω.
Διάστημα Κανονικές εκφράσεις
Αυτές οι εκφράσεις καθορίζουν τον αριθμό των εμφανίσεων ενός χαρακτήρα σε μια συμβολοσειρά. Παρατίθενται παρακάτω.
| Έκφραση | Περιγραφή |
|---|---|
| {δεν} | Ταιριάζει ακριβώς με τον προηγούμενο χαρακτήρα που εμφανίζεται «n» φορές |
| {n,m} | Ταιριάζει με τον προηγούμενο χαρακτήρα που εμφανίζεται 'n' φορές αλλά όχι περισσότερο από m |
| {n, } | Ταιριάζει με τον προηγούμενο χαρακτήρα μόνο όταν εμφανίζεται 'n' φορές ή περισσότερες |
Για παράδειγμα, φιλτράρετε όλες τις γραμμές που περιέχουν τον χαρακτήρα 'p'. Το παρακάτω στιγμιότυπο οθόνης δείχνει τις αντίστοιχες γραμμές.
Τώρα ελέγξτε ότι ο χαρακτήρας 'p' εμφανίζεται ακριβώς δύο φορές σε μια συμβολοσειρά, τη μία μετά την άλλη. Η σύνταξη για αυτό είναι:
cat sample | grep -E p\{2}
Το αποτέλεσμα του διαλειμματικού αγώνα φαίνεται παρακάτω.
Σημείωση: Πρέπει να προσθέσετε -E με αυτές τις κανονικές εκφράσεις.
Εκτεταμένες κανονικές εκφράσεις
Αυτές οι κανονικές εκφράσεις συνδυάζουν περισσότερες από μία εκφράσεις. Μερικές από αυτές είναι:
| Έκφραση | Περιγραφή |
|---|---|
| \+ | Ταιριάζει με μία ή περισσότερες εμφανίσεις του προηγούμενου χαρακτήρα |
| \? | Ταιριάζει με μηδέν ή μία εμφάνιση του προηγούμενου χαρακτήρα |
Για παράδειγμα, αναζητήστε όλες τις εμφανίσεις του χαρακτήρα 't'. Το παρακάτω στιγμιότυπο οθόνης δείχνει το αποτέλεσμα.
Ας υποθέσουμε ότι θέλετε να φιλτράρετε τις γραμμές όπου ο χαρακτήρας 'a' προηγείται του χαρακτήρα 't'. Μπορείτε να χρησιμοποιήσετε μια εντολή όπως αυτή που ακολουθεί:
cat sample|grep "a\+t"
Η έξοδος εμφανίζεται στο ακόλουθο στιγμιότυπο οθόνης.
Επέκταση του νάρθηκα
Η σύνταξη για την επέκταση των αγκυλών είναι είτε μια ακολουθία είτε μια λίστα στοιχείων που χωρίζονται με κόμμα και βρίσκονται μέσα σε αγκύλες '{}'. Τα στοιχεία έναρξης και λήξης σε μια ακολουθία διαχωρίζονται με δύο τελείες '..'.
Μερικά παραδείγματα παρουσιάζονται παρακάτω.
Στα παραπάνω παραδείγματα, η εντολή echo δημιουργεί συμβολοσειρές χρησιμοποιώντας επέκταση αγκύλων, παράγοντας πολλαπλές συμβολοσειρές από ένα μόνο μοτίβο.











