Διαίρεση συμβολοσειράς σε οριοθέτη στο Bash

Bash

Χειρισμός κατάρριψης χορδών στο Bash

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

Θα εξερευνήσουμε λύσεις όπως η χρήση της εντολής «tr» και ο χειρισμός του Διαχωριστή Εσωτερικού Πεδίου (IFS). Στο τέλος, θα μπορείτε να χειρίζεστε αποτελεσματικά τον διαχωρισμό συμβολοσειρών και να επαναφέρετε το IFS στην προεπιλεγμένη τιμή του. Ας βουτήξουμε και ας απλοποιήσουμε τις εργασίες δέσμης ενεργειών του Bash!

Εντολή Περιγραφή
tr Μεταφράζει ή διαγράφει χαρακτήρες. Χρησιμοποιείται εδώ για να αντικαταστήσει το ερωτηματικό με έναν χαρακτήρα νέας γραμμής για να χωρίσει τη συμβολοσειρά.
IFS Διαχωριστής εσωτερικού πεδίου, που χρησιμοποιείται για τη διαίρεση συμβολοσειρών με βάση έναν συγκεκριμένο οριοθέτη σε σενάρια Bash.
read -r -a Διαβάζει μια γραμμή εισόδου και τη χωρίζει σε πίνακα. Η επιλογή -r εμποδίζει τις ανάστροφες κάθετες να ερμηνεύονται ως χαρακτήρες διαφυγής.
echo Εκτυπώνει κείμενο στην τυπική έξοδο. Χρησιμοποιείται για την εμφάνιση των διαχωρισμένων στοιχείων συμβολοσειράς.
split Μια συνάρτηση Perl που διαιρεί μια συμβολοσειρά σε μια λίστα συμβολοσειρών με βάση έναν καθορισμένο οριοθέτη.
foreach Μια δομή βρόχου Perl που επαναλαμβάνεται πάνω από μια λίστα τιμών.

Κατανόηση των τεχνικών διαχωρισμού χορδών Bash

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

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

Χρήση του Bash για διαίρεση συμβολοσειρών σε οριοθέτη

Σενάριο Bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Διαίρεση συμβολοσειράς στο Bash με χρήση IFS

Σενάριο Bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Χρήση Python για διαχωρισμό συμβολοσειρών

Σενάριο Python

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

Χρησιμοποιώντας την Perl για να χωρίσετε μια συμβολοσειρά

Σενάριο Perl

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Προηγμένες τεχνικές διαχωρισμού χορδών στο Bash

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

Επιπλέον, το Η εντολή μπορεί να χρησιμοποιηθεί για τη διαίρεση συμβολοσειρών με βάση οριοθέτες. ο Η εντολή χρησιμοποιείται συνήθως για την εξαγωγή τμημάτων από κάθε γραμμή δεδομένων εισόδου. Καθορίζοντας έναν οριοθέτη με το επιλογή και επιλέγοντας τα πεδία με το -f επιλογή, μπορούμε αποτελεσματικά να χωρίσουμε και να εξαγάγουμε μέρη μιας συμβολοσειράς. Για παράδειγμα, χρησιμοποιώντας θα εξάγει την πρώτη διεύθυνση email από τη συμβολοσειρά εισόδου. Αυτές οι προηγμένες μέθοδοι παρέχουν περισσότερο έλεγχο και ακρίβεια για εργασίες χειρισμού συμβολοσειρών στο Bash.

  1. Πώς μπορώ να χωρίσω μια συμβολοσειρά σε έναν οριοθέτη στο Bash;
  2. Μπορείτε να χρησιμοποιήσετε το μεταβλητή ή εντολές όπως , , και cut για να χωρίσετε τις χορδές σε έναν οριοθέτη.
  3. Τι είναι το μεταβλητή στο Bash;
  4. ο (Internal Field Separator) είναι μια ειδική μεταβλητή που ορίζει τους χαρακτήρες που χρησιμοποιούνται για τον διαχωρισμό του κειμένου εισαγωγής σε λέξεις ή διακριτικά.
  5. Πώς μπορώ να επαναφέρω το μεταβλητή στην προεπιλεγμένη τιμή του;
  6. Αποθηκεύστε το πρωτότυπο τιμή πριν την αλλάξετε και επαναφέρετέ την μετά την επεξεργασία: .
  7. Τι κάνει το εντολή do στο splitting συμβολοσειρών;
  8. ο εντολή μεταφράζει ή διαγράφει χαρακτήρες. Μπορεί να αντικαταστήσει τους οριοθέτες με νέες γραμμές για να χωρίσει μια συμβολοσειρά: .
  9. Μπορώ να χωρίσω μια συμβολοσειρά σε έναν πίνακα χρησιμοποιώντας το Bash;
  10. Ναι, αλλάζοντας το μεταβλητή και χρήση , μπορείτε να χωρίσετε μια συμβολοσειρά σε έναν πίνακα:
  11. Τι είναι το εντολή που χρησιμοποιείται για;
  12. είναι ένα βοηθητικό πρόγραμμα γραμμής εντολών για σάρωση και επεξεργασία μοτίβων. Μπορεί να χωρίσει συμβολοσειρές ορίζοντας προσαρμοσμένα διαχωριστικά πεδίων.
  13. Πώς το εργασία εντολής;
  14. ο εντολή εξάγει τμήματα από κάθε γραμμή εισόδου. Μπορεί να χωρίσει συμβολοσειρές καθορίζοντας έναν οριοθέτη και επιλέγοντας πεδία: .
  15. Γιατί χρησιμοποιεί βοηθά στο διαχωρισμό χορδών;
  16. Χρησιμοποιώντας σας επιτρέπει να ορίσετε προσαρμοσμένους οριοθέτες για διαχωρισμό συμβολοσειρών, καθιστώντας το ευέλικτο για διαφορετικές μορφές εισόδου.
  17. Είναι δυνατός ο διαχωρισμός μιας συμβολοσειράς με πολλαπλούς οριοθέτες στο Bash;
  18. Ναι, μπορείτε να χρησιμοποιήσετε έναν συνδυασμό και για να χειριστεί πολλαπλούς οριοθέτες.
  19. Μπορώ να χρησιμοποιήσω για διαχωρισμό χορδών στο Bash;
  20. Ενώ είναι κυρίως πρόγραμμα επεξεργασίας ροής, μπορεί να συνδυαστεί με άλλες εντολές όπως να χωρίζει τις χορδές έμμεσα.

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