Πώς να ελέγξετε εάν μια συμβολοσειρά περιέχει μια υποχορδή στο Bash

How Check If String Contains Substring Bash



Το ερώτημα είναι, πώς να ελέγξετε εάν μια συμβολοσειρά περιέχει μια υπο -συμβολοσειρά στο Bash. Η απάντηση είναι: χρησιμοποιήστε το Pattern Matching. Αυτό δημιουργεί ένα άλλο ερώτημα, το οποίο είναι: τι είναι το Pattern Matching; Λοιπόν, μια φράση σε μια πρόταση έχει ορισμένα χαρακτηριστικά. Γι 'αυτό διαφέρει από άλλες φράσεις στην ίδια πρόταση ή σε άλλες προτάσεις. Τα χαρακτηριστικά μπορούν να κωδικοποιηθούν ως πρότυπο. Με αυτόν τον τρόπο, μπορεί να προσδιοριστεί μια συγκεκριμένη φράση σε μια συμβολοσειρά. Αυτό το άρθρο εξηγεί πώς μπορείτε να προσδιορίσετε μια συγκεκριμένη υπο -συμβολοσειρά σε μια μεγαλύτερη συμβολοσειρά, να αντικαταστήσετε την υπο -συμβολοσειρά που ταιριάζει με μια άλλη συμβολοσειρά και να εντοπίσετε τυχόν υποσύμβολο σε μια μεγαλύτερη συμβολοσειρά κατά ευρετήριο. Ωστόσο, πριν ξεκινήσουμε τις εξηγήσεις, πρέπει να θυμηθούμε τους διαφορετικούς τρόπους με τους οποίους μια συμβολοσειρά δημιουργείται στο Bash.

Συμβολοσειρά από Escaping Spaces

Μια συμβολοσειρά μπορεί να κατασκευαστεί αντικαθιστώντας κάθε διάστημα με την ακολουθία διαφυγής χώρου, ‘’. όπως λέμε:







myVar= Τουρισμός σε Αίγυπτος είναι ένα της χώρας 's κορυφαίες οικονομικές βιομηχανίες.
πέταξε έξω $ myVar

Η έξοδος είναι:



Ο τουρισμός στην Αίγυπτο είναι ένας από τους κορυφαίους οικονομικούς κλάδους της χώρας.



Σημείωση: η απόστροφος χρησιμοποίησε επίσης την ακολουθία διαφυγής χώρου.





Χορδή από μεμονωμένα αποσπάσματα

Έχει ο προγραμματιστής το χρόνο να ξεφύγει από όλους τους χώρους σε μια συμβολοσειρά; Όχι. Επομένως, η χρήση δύο μεμονωμένων εισαγωγικών για την οριοθέτηση μιας συμβολοσειράς είναι καλύτερη. όπως:

myVar=«Ο τουρισμός στην Αίγυπτο είναι μία από τις χώρες» ''κορυφαίες οικονομικές βιομηχανίες.'

Μια συμβολοσειρά με μία μόνο παράθεση δεν επιτρέπει την επέκταση (αντικατάσταση με το εφέ της) οποιασδήποτε ακολουθίας διαφυγής. Ευτυχώς, εάν δύο συμβολοσειρές κωδικοποιηθούν η μία δίπλα στην άλλη, θα ληφθούν ως μία συμβολοσειρά. Μια αλληλουχία διαφυγής μπορεί να εισαχθεί ενδιάμεσα, όπως έγινε παραπάνω. Η ακολουθία διαφυγής θα επεκταθεί. Άρα η έξοδος γίνεται:



Ο τουρισμός στην Αίγυπτο είναι ένας από τους κορυφαίους οικονομικούς κλάδους της χώρας.

Συμβολοσειρά με διπλά αποσπάσματα

Με διπλά εισαγωγικά, οι ακολουθίες διαφυγής δεν επεκτείνονται επίσης, αλλά οι μεταβλητές διευρύνονται. Ο παρακάτω κώδικας το δείχνει αυτό:

myVar= Τουρισμός σε Αίγυπτος είναι ένα της χώρας 's κορυφαίες οικονομικές βιομηχανίες.
πέταξε έξω $ myVar

Η έξοδος είναι:

Ο τουρισμός στην Αίγυπτο είναι ένας από τους κορυφαίους οικονομικούς κλάδους της χώρας.

Σημείωση: η απόστροφος χρησιμοποίησε επίσης την ακολουθία διαφυγής χώρου.

Σε αυτό το άρθρο, ο κύριος τύπος συμβολοσειράς που εξετάζεται είναι η συμβολοσειρά σε μεμονωμένα εισαγωγικά.

Βασικές αρχές τακτικής έκφρασης

Regex

Εξετάστε αυτήν τη συμβολοσειρά:

Αυτός ο κόσμος δεν είναι πραγματικά το σπίτι μας.

Αφήστε τον κόσμο να είναι το υποσύνολο του ενδιαφέροντος. Στη συνέχεια, η μεγάλη συμβολοσειρά (ολόκληρη συμβολοσειρά) ονομάζεται συμβολοσειρά στόχου ή απλά, στόχος. Ο «κόσμος» στα εισαγωγικά ονομάζεται κανονική έκφραση ή απλά, regex. Το περιεχόμενο, κόσμος, είναι το μοτίβο, σε αυτή την περίπτωση.

Απλή αντιστοίχιση

Στον ακόλουθο κώδικα, αν η λέξη «κόσμος» βρίσκεται στο στόχο, θα λέγαμε ότι η λέξη έχει αντιστοιχιστεί.

Π='Αυτός ο κόσμος δεν είναι πραγματικά το σπίτι μας.'
reg='κόσμος'
αν [[ $ str= ~$ reg ]]?τότε
πέταξε έξωβρέθηκαν
αλλού
πέταξε έξωδεν βρέθηκε
είναι

= ~, ο οποίος είναι ο τελεστής εκχώρησης ακολουθούμενος από το ~, ονομάζεται τελεστής δέσμευσης. Η συνθήκη ελέγχει εάν το μοτίβο ταιριάζει με τη συμβολοσειρά στόχου. Εάν μια στοιχειοσειρά που αντιστοιχεί στο μοτίβο βρίσκεται στο στόχο, η εντολή echo εμφανίζεται. Εάν δεν βρεθεί, η δήλωση echo δεν αντηχεί. Η έξοδος για αυτόν τον κώδικα είναι:

βρέθηκαν

Καθώς το μοτίβο, κόσμος, βρίσκεται στον στόχο. Σημειώστε ότι ο οριακός χώρος μετά το [[και πριν]] έχει διατηρηθεί.

Πρότυπο

Στον παραπάνω κώδικα, ο «κόσμος» σε εισαγωγικά είναι το regex ενώ ο ίδιος ο κόσμος είναι το μοτίβο. Αυτό είναι ένα απλό μοτίβο. Ωστόσο, τα περισσότερα μοτίβα δεν είναι τόσο απλά. Ένα μοτίβο είναι ένας χαρακτηρισμός μιας υποσύμβασης που πρέπει να βρεθεί. Και έτσι, το μοτίβο Bash χρησιμοποιεί ορισμένους μεταχαρακτήρες. Ο μεταχαρακτήρας είναι ένας χαρακτήρας για άλλους χαρακτήρες. Για παραδείγματα, το Bash Pattern χρησιμοποιεί τους ακόλουθους μεταχαρακτήρες:

^ $ . * +? () [] {} |

Μια κανονική έκφραση μπορεί επίσης να πληκτρολογηθεί στις διπλές αγκύλες συνθήκης. Αλλά δεν χρειάζεται να είναι σε εισαγωγικά. Έτσι, σε αυτή την περίπτωση, είναι κυριολεκτικά, ένα μοτίβο.

Τάξεις χαρακτήρων

Αγκύλες

Βρίσκεται η έξοδος του ακόλουθου κώδικα, που σημαίνει ότι έγινε αντιστοιχία:

Π=«Η γάτα μπήκε στον θάλαμο».
αν [[ $ str= ~[cbr]στο]]?τότε
πέταξε έξωβρέθηκαν
είναι

Το μοτίβο, [cbr] at έχει ταιριάξει με τη γάτα, το οποίο αρχίζει με το 'c' και που συνεχίζει και τελειώνει με το at. [cbr] στα μέσα, αντιστοιχίστε το «c» ή το «b» ή το «r» που ακολουθείται από το στο.

Βρίσκεται η έξοδος του ακόλουθου κώδικα, που σημαίνει ότι έγινε αντιστοιχία:

Π=«Η νυχτερίδα μπήκε στον θάλαμο».
αν [[ $ str= ~[cbr]στο]]?τότε
πέταξε έξωβρέθηκαν
είναι

Το μοτίβο, [cbr] at έχει αντιστοιχιστεί με νυχτερίδα, που ξεκινά με ‘b’ και που συνεχίζει και τελειώνει με at. [cbr] στα μέσα, αντιστοιχίστε το «c» ή το «b» ή το «r» που ακολουθείται από το στο.

Βρίσκεται η έξοδος του ακόλουθου κώδικα, που σημαίνει ότι έγινε αντιστοιχία:

Π=«Ο αρουραίος μπήκε στον θάλαμο».
αν [[ $ str= ~[cbr]στο]]?τότε
πέταξε έξωβρέθηκαν
είναι

Το μοτίβο, [cbr] at έχει ταιριάξει αρουραίος, το οποίο ξεκινά με ‘r’ και που συνεχίζει και τελειώνει με at.

Στα παραπάνω δείγματα κώδικα, ο προγραμματιστής δεν γνωρίζει εάν υπάρχει γάτα ή νυχτερίδα ή αρουραίος στη συμβολοσειρά -στόχο. Όμως, γνωρίζει ότι η υποχορδή αρχίζει είτε με ‘c’ είτε με ‘b’ ή ‘r’, μετά συνεχίζει και τελειώνει με at. Οι αγκύλες σε μοτίβο επιτρέπουν σε διαφορετικούς πιθανούς χαρακτήρες να ταιριάζουν με έναν χαρακτήρα σε μια θέση σε σχέση με άλλους στο στόχο. Έτσι, οι τετράγωνες αγκύλες περιέχουν ένα σύνολο χαρακτήρων, εκ των οποίων ο ένας αντιστοιχεί σε υποσύμβολο. Τέλος, είναι το πλήρες υποσύγχρονο που ταιριάζει.

Σειρά χαρακτήρων

Στον παραπάνω κωδικό [cbr] υπάρχει μια κλάση. Ακόμα κι αν το «c» ή το «b» ή το «r» αντιστοιχεί σε έναν μόνο χαρακτήρα, αν αυτό που ακολουθεί αμέσως δεν ταιριάζει, το μοτίβο δεν θα ταιριάζει με τίποτα.

Λοιπόν, υπάρχουν ορισμένες περιοχές που θα σχηματίσουν μια κλάση. Για παράδειγμα, 0 έως 9 ψηφία αποτελούν την τάξη, [0-9] με 0 και 9 που περιλαμβάνονται. Τα μικρά γράμματα «α» έως «ζ» σχηματίζουν την κλάση [a-z] με τα «a» και «z» που περιλαμβάνονται. Τα κεφαλαία γράμματα «Α» έως «Ζ» σχηματίζουν την κλάση [Α-Ζ] με τα «Α» και «Ζ». Από μια τάξη, είναι ένας από τους χαρακτήρες που θα ταιριάζουν με έναν χαρακτήρα στη συμβολοσειρά.

Ο ακόλουθος κώδικας παράγει μια αντιστοίχιση:

αν [[ 'ID8id'= ~[0-9] ]]?τότε
πέταξε έξωβρέθηκαν
είναι

Αυτή τη φορά ο στόχος είναι μια κυριολεκτική συμβολοσειρά στην κατάσταση. 8, που είναι ένας από τους πιθανούς αριθμούς εντός του εύρους, [0-9], έχει αντιστοιχιστεί με 8 στη συμβολοσειρά, «ID8id». Ο παραπάνω κωδικός ισοδυναμεί με:

αν [[ 'ID8id'= ~[0123456789] ]]?τότε
πέταξε έξωβρέθηκαν
είναι

Εδώ, όλοι οι πιθανοί αριθμοί έχουν γραφτεί στο μοτίβο, οπότε δεν υπάρχει παύλα.

Στον ακόλουθο κώδικα, λαμβάνεται μια αντιστοίχιση:

αν [[ 'ID8iD'= ~[α-ζ] ]]?τότε
πέταξε έξωβρέθηκαν
είναι

Η αντιστοίχιση είναι μεταξύ πεζών ‘i’ της περιοχής, [a-z] και πεζών ‘i’ της συμβολοσειράς στόχου, ‘ID8iD’.

Θυμηθείτε: το εύρος είναι μια κατηγορία. Η τάξη μπορεί να είναι μέρος ενός μεγαλύτερου μοτίβου. Έτσι, σε ένα μοτίβο, το κείμενο μπορεί να είναι μπροστά ή/και μετά την τάξη. Ο παρακάτω κώδικας το δείχνει αυτό:

αν [[ 'ID8id είναι το αναγνωριστικό'= ~ ID[0-9]ταυτότητα ]]?τότε
πέταξε έξωβρέθηκαν
είναι

Η έξοδος είναι: βρέθηκε. Το 'ID8id' από το μοτίβο ταιριάζει με το 'ID8id' στη συμβολοσειρά στόχου.

Αρνηση

Η αντιστοίχιση δεν λαμβάνεται από τον ακόλουθο κώδικα:

αν [[ '0123456789101112'= ~[^0-9] ]]?τότε
πέταξε έξωβρέθηκαν
αλλού
πέταξε έξωδεν βρέθηκε
είναι

Η έξοδος είναι:

δεν βρέθηκε

Χωρίς ^ μπροστά από το εύρος, εντός των τετραγωνικών παρενθέσεων, το μηδέν της περιοχής θα αντιστοιχούσε στο πρώτο μηδέν της συμβολοσειράς στόχου. Έτσι, ^ μπροστά από ένα εύρος (ή προαιρετικούς χαρακτήρες) αναιρεί την κλάση.

Ο ακόλουθος κώδικας παράγει μια αντιστοίχιση επειδή η συνθήκη γράφει: αντιστοιχίστε οποιονδήποτε μη ψηφιακό χαρακτήρα οπουδήποτε στο στόχο:

αν [[ 'ABCDEFGHIJ'= ~[^0-9] ]]?τότε
πέταξε έξωβρέθηκαν
αλλού
πέταξε έξωδεν βρέθηκε
είναι

Άρα η έξοδος είναι: βρέθηκε.

[^0-9] σημαίνει μη ψηφίο, άρα [^0-9] είναι η άρνηση του [0-9].

[^a-z] σημαίνει ένα μικρό γράμμα, οπότε [^a-z] είναι η άρνηση του [a-z].

[^A-Z] σημαίνει ένα μη κεφαλαίο γράμμα, οπότε [^A-Z] είναι η άρνηση του [A-Z].

Άλλες αρνήσεις είναι διαθέσιμες.

Η περίοδος (.) Στο μοτίβο

Η περίοδος (.) Στο μοτίβο ταιριάζει με οποιονδήποτε χαρακτήρα, συμπεριλαμβανομένου του εαυτού του. Εξετάστε τον ακόλουθο κώδικα:

αν [[ '6759WXY.A3'= ~ 7,9W.Y.A]]?τότε
πέταξε έξωβρέθηκαν
είναι

Η έξοδος του κώδικα βρίσκεται επειδή οι άλλοι χαρακτήρες ταιριάζουν. Μία τελεία ταιριάζει με το «5». μια άλλη κουκίδα ταιριάζει με το ‘X’. και η τελευταία τελεία ταιριάζει με μια τελεία.

Αντιστοίχιση εναλλαγής

Εξετάστε αυτήν την πρόταση για μια συμβολοσειρά -στόχο:

Το κλουβί έχει πουλιά διαφορετικών τύπων.

Κάποιος μπορεί να θέλει να μάθει αν αυτός ο στόχος έχει περιστέρι ή παγώνι ή αετό. Ο παρακάτω κωδικός μπορεί να χρησιμοποιηθεί:

Π='Το κλουβί έχει παγώνια διαφορετικών τύπων.'
αν [[ $ str= ~ περιστέρι|παγώνι|αετός]]?τότε
πέταξε έξωβρέθηκαν
αλλού
πέταξε έξωδεν βρέθηκε
είναι

Η έξοδος βρέθηκε. Ο μεταχαρακτήρας εναλλαγής, | έχει απασχοληθεί. Μπορεί να υπάρχουν δύο, τρεις, τέσσερις και περισσότερες εναλλακτικές λύσεις. Αυτό που ταιριάζει σε αυτόν τον κώδικα είναι το «παγώνι».

Ομαδοποίηση

Στο παρακάτω μοτίβο, έχουν χρησιμοποιηθεί παρενθέσεις για την ομαδοποίηση χαρακτήρων:

μια σκηνή (χορεύτρια)

Η ομάδα εδώ είναι ένας χορευτής σκηνής που περιβάλλεται από τους μεταχαρακτήρες (και). (χορευτής) είναι μια υποομάδα, ενώ μια σκηνή (χορεύτρια) είναι ολόκληρη η ομάδα. Σκέψου τα ακόλουθα:

Ο (ο χορευτής είναι φοβερός)

Εδώ, η υποομάδα ή η υποομάδα είναι, ο χορευτής είναι φοβερός.

Υποσύρματα με κοινά μέρη

Ένας ενδιαφερόμενος είναι ένα άτομο με ενδιαφέρον για μια επιχείρηση. Φανταστείτε μια επιχείρηση με έναν ιστότοπο, το.com.com. Φανταστείτε ότι μία από τις ακόλουθες συμβολοσειρές στόχου βρίσκεται στον υπολογιστή:

Ο ιστότοπος, στοιχήματος.com είναι για την επιχείρηση.

Υπάρχει ο ενδιαφερόμενος.

Ο ενδιαφερόμενος εργάζεται για το.com.com .;

Αφήστε οποιαδήποτε από αυτές τις χορδές να είναι ο στόχος. Ο προγραμματιστής μπορεί να θέλει να μάθει εάν το διαδίκτυο.com ή ο ενδιαφερόμενος είναι σε οποιαδήποτε συμβολοσειρά στόχου. Το πρότυπό του θα είναι:

stock.com | ενδιαφερόμενος

χρησιμοποιώντας εναλλαγή.

το ποντάρισμα έχει πληκτρολογηθεί δύο φορές στις δύο λέξεις. Αυτό μπορεί να αποφευχθεί πληκτρολογώντας το μοτίβο ως εξής:

μερίδιο (.com | κάτοχος)

.com | κάτοχος είναι η υποομάδα σε αυτήν την περίπτωση.

Σημείωση: η χρήση του χαρακτήρα εναλλαγής σε αυτήν την περίπτωση. Η στοιχήματα.com ή τα ενδιαφερόμενα μέρη θα συνεχίσουν να αναζητούνται. Βρίσκεται η έξοδος του ακόλουθου κώδικα:

Π='Ο ιστότοπος, το.com.com είναι για την επιχείρηση.'
αν [[ $ str= ~ ποντάρισμα(.με|κάτοχος) ]]?τότε
πέταξε έξωβρέθηκαν
είναι

Ο υπότιμος που ταιριάζει εδώ είναι το.com.com.

Ο προκαθορισμένος πίνακας BASH_REMATCH

Το BASH_REMATCH είναι ένας προκαθορισμένος πίνακας. Ας υποθέσουμε ότι ένα μοτίβο έχει ομάδες. Ολόκληρη η ομάδα ταιριάζει, πηγαίνει στο κελί για τον δείκτη 0 αυτού του πίνακα. Η πρώτη υποομάδα ταιριάζει, μπαίνει στο κελί για τον δείκτη 1. η δεύτερη υποομάδα ταιριάζει, μπαίνει στο κελί για τον δείκτη 2 και ούτω καθεξής. Ο παρακάτω κώδικας δείχνει πώς να χρησιμοποιήσετε αυτόν τον πίνακα:

Π=«Theρθε ο χορευτής της σκηνής».
αν [[ $ str= ~ στάδιο (χορεύτρια) ]]?τότε
πέταξε έξωβρέθηκαν
είναι

ΓιαΕγώσε $ {! BASH_REMATCH [@]}?κάνω
printf '$ {BASH_REMATCH [i]}, '
Έγινε
πέταξε έξω

Η έξοδος είναι:

βρέθηκαν
χορευτής σκηνής, χορευτής,

Όλη η ομάδα είναι χορεύτρια σκηνής. Υπάρχει μόνο μία υποομάδα, η οποία είναι χορεύτρια.

Σημείωση: ο χώρος στο μοτίβο έχει διαφύγει.

Αντιστοίχιση ανεξαρτησίας με κεφαλαία/πεζά

Η αντιστοίχιση, όπως εξηγήθηκε παραπάνω, έχει διάκριση πεζών-κεφαλαίων. Η αντιστοίχιση μπορεί να γίνει ανεξάρτητα από την περίπτωση. Αυτό απεικονίζεται στον ακόλουθο κώδικα:

καταστήματα -μικρόnocasematch

Π=«Μας αρέσει η καλή μουσική».
αν [[ $ str= ~ GoOd]]?τότε
πέταξε έξωβρέθηκαν
είναι

καταστήματα -unocasematch

Η έξοδος είναι: βρέθηκε. Το μοτίβο είναι, GoOd. Το υπότιμο που ταιριάζει είναι 'καλό'. Σημειώστε πώς έχει ενεργοποιηθεί η επιλογή nocasematch στην αρχή του τμήματος κώδικα και έχει απενεργοποιηθεί στο τέλος του τμήματος κώδικα.

Μήκος συμβολοσειράς

Η σύνταξη για να λάβετε το μήκος μιας συμβολοσειράς είναι:

$ {#ΠΑΡΑΜΕΤΡΟ}

Παράδειγμα:

Π=«Μας αρέσει η καλή μουσική».
πέταξε έξω $ {# str}

Η έξοδος είναι: 19.

Μείωση συμβολοσειράς

Οι συντάξεις για τη μείωση συμβολοσειράς είναι:

$ {ΠΑΡΑΜΕΤΡΟ: OFFSET}
$ {ΠΑΡΑΜΕΤΡΟΣ: OFFSET: LENGTH}

όπου η καταμέτρηση για το OFFSET ξεκινά από το μηδέν.

Το ακόλουθο παράδειγμα δείχνει τον τρόπο κατάργησης των πρώτων 11 χαρακτήρων μιας συμβολοσειράς:

Π=«Πάντα χορεύω με καλή μουσική».
πέταξε έξω $ {str: 10}

Η έξοδος είναι:

η καλή μουσική.

Η καταμέτρηση για LENGTH, ξεκινά από τον επόμενο χαρακτήρα. Ο ακόλουθος κώδικας δείχνει πώς μπορεί να επιτρέπεται ένα τμήμα εντός της συμβολοσειράς:

Π=«Πάντα χορεύω με καλή μουσική».
πέταξε έξω $ {str: 10: 6}

Η έξοδος είναι:

ance t

Οι πρώτοι 11 χαρακτήρες αφαιρέθηκαν. επιτρέπονται οι επόμενοι 6 χαρακτήρες και οι υπόλοιποι χαρακτήρες αφαιρούνται αυτόματα.

Αναζήτηση και αντικατάσταση

Όταν βρεθεί μια υπο -συμβολοσειρά, μπορεί να αντικατασταθεί με μια άλλη. Οι συντακτικές για αυτό είναι:

όπου=$ {PARAMETER/PATTERN/REPLACEMENT}
όπου=$ {PARAMETER // PATTERN/REPLACEMENT}
όπου=$ {PARAMETER/PATTERN}
όπου=$ {PARAMETER // PATTERN}

Για την πρώτη σύνταξη με κάθετο προς τα εμπρός, αντικαθίσταται μόνο η πρώτη αντιστοίχιση. Παράδειγμα:

Π=«Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο».
σωστά=$ {str/[cbr] at/big cow}
πέταξε έξω $ str
πέταξε έξω $ ret

Η έξοδος είναι:

Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο.
Υπάρχει μια μεγάλη αγελάδα, μια νυχτερίδα και μια γάτα, στο θάλαμο.

Για τη δεύτερη σύνταξη με διπλές κλίσεις προς τα εμπρός, αντικαθίστανται όλες οι εμφανίσεις του αγώνα. Παράδειγμα:

Π=«Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο».
σωστά=$ {str // [cbr] at/big cow}
πέταξε έξω $ str
πέταξε έξω $ ret

Η έξοδος είναι:

Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο.
Υπάρχει μια μεγάλη αγελάδα, μια μεγάλη αγελάδα και μια μεγάλη αγελάδα, στο θάλαμο.

Για την τρίτη σύνταξη με κάθετο κάθετο, δεν υπάρχει αντικατάσταση για την πρώτη και μοναδική αντιστοίχιση.

Επίσης, διαγράφεται η πρώτη υποχορδή που βρέθηκε. Παράδειγμα:

Π=«Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο».
σωστά=$ {str/[cbr] at}
πέταξε έξω $ str
πέταξε έξω $ ret

Για την τέταρτη σύνταξη με διπλές πτώσεις προς τα εμπρός, δεν υπάρχει αντικατάσταση για όλα τα ματς. Επίσης, διαγράφονται όλα τα υποσύμβολα που βρέθηκαν. Παράδειγμα:

Π=«Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο».
σωστά=$ {str // [cbr] at}
πέταξε έξω $ str
πέταξε έξω $ ret

Η έξοδος είναι:

Υπάρχει ένας αρουραίος, μια νυχτερίδα και μια γάτα, στο θάλαμο.
Υπάρχει ένα, ένα και ένα, στο θάλαμο.

συμπέρασμα

Για να ελέγξετε εάν μια συμβολοσειρά έχει μια υπο -συμβολοσειρά στο Bash, πρέπει να χρησιμοποιηθεί η αντιστοίχιση μοτίβου. Η αντιστοίχιση μοτίβου δεν πραγματοποιείται μόνο στις δύο παρενθέσεις, [[. Το Το ]]. Μπορεί επίσης να λάβει χώρα στην επέκταση παραμέτρων, με το $ {. Το .}. Με την επέκταση παραμέτρων, είναι δυνατή η απόκτηση μιας υποσύμβασης με ευρετήρια.

Αυτό που παρουσιάστηκε σε αυτό το άρθρο είναι τα πιο κρίσιμα σημεία στο Pattern Matching. Υπάρχουν περισσότερα! Ωστόσο, αυτό που πρέπει να μελετήσει ο αναγνώστης στη συνέχεια, είναι η επέκταση ονόματος αρχείου.