Bash Split String Παραδείγματα

Bash Split String Examples



Πρέπει να χωρίσουμε τα δεδομένα συμβολοσειράς για διάφορους σκοπούς στον προγραμματισμό. Πολλές γλώσσες προγραμματισμού έχουν μια ενσωματωμένη συνάρτηση που ονομάζεται «split» για διαίρεση τυχόν δεδομένων συμβολοσειράς σε πολλά μέρη. Αλλά δεν υπάρχει ενσωματωμένη συνάρτηση στο bash για διαίρεση της συμβολοσειράς. Κανονικά, μεμονωμένοι ή πολλαπλοί οριοθέτες χρησιμοποιούνται για τη διάσπαση τυχόν δεδομένων συμβολοσειράς. Ο τρόπος με τον οποίο μπορείτε να χωρίσετε τη συμβολοσειρά σε bash φαίνεται σε αυτό το σεμινάριο χρησιμοποιώντας διαφορετικά παραδείγματα.








Χρήση μεταβλητής $ IFS

Η ειδική μεταβλητή κελύφους $ IFS χρησιμοποιείται στο bash για διαίρεση μιας συμβολοσειράς σε λέξεις. Η μεταβλητή $ IFS ονομάζεται Διαχωριστής εσωτερικού πεδίου (IFS) που χρησιμοποιείται για την εκχώρηση του συγκεκριμένου οριοθέτη για τη διαίρεση της συμβολοσειράς. Τα όρια λέξεων προσδιορίζονται στο bash από το $ IFS. Ο λευκός χώρος είναι η προεπιλεγμένη τιμή οριοθέτησης για αυτήν τη μεταβλητή. Οποιαδήποτε άλλη τιμή όπως ‘ t’, ‘ n’, ‘-‘ κ.λπ. Μπορεί να χρησιμοποιηθεί ως οριοθέτης. Αφού αντιστοιχίσετε την τιμή σε μεταβλητή $ IFS, η τιμή συμβολοσειράς μπορεί να διαβαστεί με δύο επιλογές. Αυτά είναι τα ‘-r’ και ‘-a’. Η επιλογή «-r» χρησιμοποιείται για την ανάγνωση του backslash () ως χαρακτήρα και όχι ως χαρακτήρα διαφυγής και η επιλογή «-a» χρησιμοποιείται για την αποθήκευση των διαχωρισμένων λέξεων σε μια μεταβλητή πίνακα. Η συμβολοσειρά μπορεί να χωριστεί χωρίς να χρησιμοποιηθεί η μεταβλητή $ IFS στο bash. Διαφορετικοί τρόποι διαχωρισμού δεδομένων συμβολοσειράς (με $ IFS ή χωρίς $ IFS) παρουσιάζονται στα ακόλουθα παραδείγματα.



Παράδειγμα-1: Διαχωρισμός συμβολοσειράς με βάση

Η τιμή συμβολοσειράς διαιρείται από το κενό διάστημα από προεπιλογή. Δημιουργήστε ένα αρχείο με το όνομα ‘split1.sh’ και προσθέστε τον ακόλουθο κώδικα. Εδώ, η μεταβλητή $ text χρησιμοποιείται για να εκχωρήσει μια τιμή συμβολοσειράς. Η μεταβλητή κελύφους, $ IFS χρησιμοποιείται για την εκχώρηση του χαρακτήρα που θα χρησιμοποιηθεί για τη διαίρεση των δεδομένων συμβολοσειράς. Ο χώρος χρησιμοποιείται σε αυτό το σενάριο ως διαχωριστής. Η επιλογή '-a' χρησιμοποιείται με την εντολή ανάγνωσης για την αποθήκευση των διαχωρισμένων δεδομένων σε μια μεταβλητή πίνακα που ονομάζεται $ strarr. Ο βρόχος 'for' χρησιμοποιείται για την ανάγνωση κάθε στοιχείου του πίνακα, $ strarr.



split1.sh





#!/bin/bash

#Καθορίστε την τιμή συμβολοσειράς
κείμενο='Καλώς ορίσατε στο LinuxHint'

# Ορίστε χώρο ως οριοθέτη
IFS=''

#Διαβάστε τις διαχωρισμένες λέξεις σε έναν πίνακα με βάση τον οριοθέτη χώρου
ανάγνωση -προς τοstrarr<<< '$ κείμενο'

#Υπολογίστε τις συνολικές λέξεις
πέταξε έξω 'Υπάρχουν$ {#strarr [*]}λέξεις στο κείμενο ».

# Εκτυπώστε κάθε τιμή του πίνακα χρησιμοποιώντας το βρόχο
Γιαωρεςσε '$ {strarr [@]}'?
κάνω
printf '$ ώρες n'
Έγινε

Παραγωγή:

Εκτελέστε το σενάριο.



$κτυπώ δυνατάsplit1.sh

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του σεναρίου.

Παράδειγμα-2: Διαχωρισμός συμβολοσειράς βάσει συγκεκριμένου χαρακτήρα

Οποιοσδήποτε συγκεκριμένος χαρακτήρας μπορεί να χρησιμοποιηθεί ως διαχωριστής για τη διαίρεση της τιμής συμβολοσειράς. Δημιουργήστε ένα αρχείο με όνομα split2.sh και προσθέστε τον ακόλουθο κώδικα. Εδώ, το όνομα του βιβλίου, το όνομα του συγγραφέα και η τιμή τιμής λαμβάνονται με την προσθήκη κόμματος (,) ως συμβολοσειρά εισόδου. Στη συνέχεια, η τιμή συμβολοσειράς διαιρείται και αποθηκεύεται σε έναν πίνακα που βασίζεται στην τιμή της μεταβλητής κελύφους, $ IFS. Κάθε τιμή των στοιχείων του πίνακα εκτυπώνεται με την τιμή ευρετηρίου.

split2.sh

#!/bin/bash

#Διαβάστε την τιμή συμβολοσειράς
πέταξε έξω «Εισαγάγετε το όνομα του βιβλίου, το όνομα του συγγραφέα και την τιμή διαχωρίζοντας κόμμα. '
ανάγνωσηκείμενο

# Ορίστε κόμμα ως οριοθέτη
IFS=','

#Διαβάστε τις διαχωρισμένες λέξεις σε έναν πίνακα που βασίζεται σε οριοθέτηση κόμματος
ανάγνωση -προς τοstrarr<<< '$ κείμενο'

#Εκτυπώστε τις χωρισμένες λέξεις
πέταξε έξω 'Όνομα βιβλίου:$ {strarr [0]}'
πέταξε έξω 'Όνομα συγγραφέα:$ {strarr [1]}'
πέταξε έξω «Τιμή:$ {strarr [2]}'

Παραγωγή:

Εκτελέστε το σενάριο.

$κτυπώ δυνατάsplit2.sh

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του σεναρίου.

Παράδειγμα-3: Χωρίστε τη συμβολοσειρά χωρίς μεταβλητή $ IFS

Αυτό το παράδειγμα δείχνει πώς μπορεί να διαιρεθεί η τιμή συμβολοσειράς χωρίς τη χρήση $ IFS στο bash. Δημιουργήστε ένα αρχείο με το όνομα « split3.sh ’ και προσθέστε τον ακόλουθο κώδικα. Σύμφωνα με το σενάριο, μια τιμή κειμένου με την άνω και κάτω τελεία (:) πρέπει να λάβει ως είσοδο για τη διάσπαση. Εδώ, η εντολή ‘readarray’ με επιλογή -d χρησιμοποιείται για τον διαχωρισμό των δεδομένων συμβολοσειράς. Η επιλογή '-d' χρησιμοποιείται για τον ορισμό του χαρακτήρα διαχωριστή στην εντολή όπως το $ IFS. Στη συνέχεια, ο βρόχος ‘for’ χρησιμοποιείται για την εκτύπωση των στοιχείων του πίνακα.

split3.sh

#!/bin/bash

#Διαβάστε την κύρια συμβολοσειρά
πέταξε έξω 'Εισαγάγετε τη συμβολοσειρά με άνω και κάτω τελεία (:) για διάσπαση'
ανάγνωσηmainstr

#Διαχωρίστε τη συμβολοσειρά με βάση τον οριοθέτη, ':'
readarray-ρε:-tstrarr<<< '$ mainstr'
printf ' n'

# Εκτυπώστε κάθε τιμή του πίνακα χρησιμοποιώντας βρόχο
Για (( ν=0? ν< $ {#strarr [*]}? n ++))
κάνω
πέταξε έξω '$ {strarr [n]}'
Έγινε

Παραγωγή:

Εκτελέστε το σενάριο.

$κτυπώ δυνατάsplit3.sh

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του σεναρίου.

Παράδειγμα-4: Διαχωρίστε τη συμβολοσειρά με έναν οριοθέτη πολλών χαρακτήρων

Η τιμή συμβολοσειράς διαιρείται με έναν οριοθέτη χαρακτήρα σε όλα τα προηγούμενα παραδείγματα. Ο τρόπος με τον οποίο μπορείτε να χωρίσετε τη συμβολοσειρά χρησιμοποιώντας διαχωριστικό πολλών χαρακτήρων φαίνεται σε αυτό το παράδειγμα. Δημιουργήστε ένα αρχείο με όνομα Times split4.sh και προσθέστε τον ακόλουθο κώδικα. Εδώ, η μεταβλητή $ text χρησιμοποιείται για την αποθήκευση δεδομένων συμβολοσειράς. Η μεταβλητή $ οριοθέτησης χρησιμοποιείται για την εκχώρηση δεδομένων πολλών χαρακτήρων που χρησιμοποιούνται ως οριοθέτης στις επόμενες προτάσεις. Η μεταβλητή $ myarray χρησιμοποιείται για την αποθήκευση κάθε διαχωρισμένου δεδομένων ως στοιχείου πίνακα. Τέλος, όλα τα διαχωρισμένα δεδομένα εκτυπώνονται χρησιμοποιώντας τον βρόχο 'for'.

split4.sh

#!/bin/bash

#Καθορίστε τη συμβολοσειρά για διάσπαση
κείμενο='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Καθορισμός οριοθέτησης πολλών χαρακτήρων
οριοθετητής='μαθαίνω'
#Συνδυάστε τον οριοθέτη με την κύρια συμβολοσειρά
σειρά=$ κείμενοοριοθέτης $

#Διαχωρίστε το κείμενο με βάση τον οριοθέτη
myarray=()
ενώ [[ $ string ]]?κάνω
myarray+=( '$ {string %% '$ delimiter'*}' )
σειρά=$ {string#*'$ delimiter'}
Έγινε

#Εκτυπώστε τις λέξεις μετά το χωρισμό
Γιααξίασε $ {myarray [@]}
κάνω
πέταξε έξω '$ αξία'
Έγινε
printf ' n'

Παραγωγή:

Εκτελέστε το σενάριο.

$κτυπώ δυνατάsplit4.sh

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του σεναρίου.

Συμπέρασμα:

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

Για περισσότερες πληροφορίες δείτε το βίντεο !