Bash Κατάργηση τελευταίων x χαρακτήρων από συμβολοσειρά

Bash Remove Last X Characters From String



Κάποιες φορές μπορεί να χρειαστεί να διαγράψετε γράμματα από μια συμβολοσειρά. Όπως και να έχει, το Linux περιλαμβάνει αρκετά ενσωματωμένα, χρήσιμα εργαλεία για την αφαίρεση γραμμάτων από ένα τέτοιο κείμενο στο Bash. Αυτό το άρθρο δείχνει πώς μπορείτε να διαγράψετε γράμματα από μια συμβολοσειρά χρησιμοποιώντας αυτές τις μεθόδους. Σε αυτήν την ανάρτηση, οι οδηγίες εκτελέστηκαν στο Ubuntu 20.04 Focal Fossa. Οι ίδιες οδηγίες μπορεί να εκτελούνται σε οποιοδήποτε σύστημα Linux που έχει εγκατεστημένα τα βοηθητικά προγράμματα που αναφέρονται παραπάνω. Για να εκτελέσουμε τις οδηγίες, θα χρησιμοποιήσουμε το συνηθισμένο τερματικό. Η συντόμευση Ctrl+Alt+T θα ανοίξει το εργαλείο τερματικού.

Μέθοδος 01: Substring Way

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









Καθώς το αρχείο δημιουργήθηκε γρήγορα στον αρχικό φάκελο του Ubuntu 20.04, ανοίξτε το σε κάποιο πρόγραμμα επεξεργασίας για επεξεργασία. Έτσι, επιλέγουμε τον επεξεργαστή GNU για να ανοίξουμε το έγγραφο file.sh όπως παρακάτω.







Αντιγράψτε τον κώδικα που φαίνεται παρακάτω σε αυτό. Αυτός ο κώδικας περιέχει επέκταση bash στην αρχή, και μετά από αυτό, έχουμε δηλώσει μια μεταβλητή συμβολοσειράς val με τιμή συμβολοσειράς. Στην άλλη γραμμή, χρησιμοποιούμε τη φράση ηχώ για να εμφανίσουμε αυτήν τη μεταβλητή στο τερματικό. Η πραγματική αποστολή ξεκινά από εδώ. Έχουμε αρχικοποιήσει μια νέα μεταβλητή και της αποδίδουμε μια τιμή που είναι υποσύμβολο της αρχικής μεταβλητής val. Το έχουμε κάνει αναφέροντας το -14 στα σιδεράκια μετά από διπλές τελεία. Αυτό λέει στον μεταγλωττιστή ότι πρέπει να αφαιρέσει τα τελευταία 14 γράμματα από την αρχική συμβολοσειρά FirstWorldCountries. Τα υπόλοιπα γράμματα θα αποθηκευτούν στη μεταβλητή new. Στην τελευταία γραμμή, η ηχώ χρησιμοποιήθηκε για να εκτυπώσει τη νέα μεταβλητή νέα.



Η σωστή εκτέλεση ενός αρχείου file.sh χρησιμοποιώντας την εντολή bash βγαίνει όπως αναμενόταν. Πρώτον, εμφανίζει την τιμή της πρώτης μεταβλητής συμβολοσειράς val και μετά από αυτήν, εμφανίζει την τιμή της νεοδημιουργημένης συμβολοσειράς από μια πρώτη μεταβλητή, όπως φαίνεται στην έξοδο.

Μέθοδος 02: Χρήση ειδικών συμβόλων

Μια άλλη απλή και ευκολότερη μέθοδος για την αφαίρεση των τελευταίων γραμμάτων ή χαρακτήρων από οποιαδήποτε συμβολοσειρά είναι μέσω των ειδικών συμβόλων ή χαρακτήρων, π.χ., σύμβολα ποσοστού και ερωτηματικών. Έτσι, αυτή τη φορά θα χρησιμοποιήσουμε το ποσοστό και το ερωτηματικό για να αφαιρέσουμε τους χαρακτήρες από οποιαδήποτε συμβολοσειρά. Ως εκ τούτου, έχουμε ήδη ανοίξει το ίδιο αρχείο για να ενημερώσουμε το σενάριο bash χρησιμοποιώντας έναν επεξεργαστή GNU Nano. Ο γενικός κώδικας είναι ο ίδιος, αλλά το μεταβλητό νέο τμήμα είναι λίγο διαφορετικό. Χρησιμοποιήσαμε ένα σύμβολο ποσοστού για να ενημερώσουμε το σύστημα ότι οι αναφερόμενοι αριθμοί ερωτηματικών αντιπροσωπεύουν τον αριθμό των χαρακτήρων από μια μεταβλητή val που πρέπει να αφαιρεθούν μετά από αυτό το ποσοστό. Μπορείτε να δείτε ότι έχουμε προσθέσει 9 σύμβολα ερωτηματικών. Αυτό σημαίνει ότι οι τελευταίοι 9 χαρακτήρες από τη συμβολοσειρά FirstWorldCountries θα αφαιρεθούν και η υπόλοιπη συμβολοσειρά θα είναι FirstWorld. Αυτή η υπόλοιπη συμβολοσειρά θα αποθηκευτεί στη συνέχεια σε μια νέα μεταβλητή.

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

Μέθοδος 03: Χρήση Sed

Το Sed είναι ένα χρήσιμο και αποτελεσματικό εργαλείο για την αλλαγή των ακολουθιών κειμένου. Αυτό είναι ένα μη διαδραστικό περιβάλλον ανάπτυξης που σας επιτρέπει να εργάζεστε με την εισαγωγή δεδομένων και να κάνετε απλούς μετασχηματισμούς κειμένου. Μπορείτε επίσης να χρησιμοποιήσετε το sed για να διαγράψετε γράμματα από κείμενα που δεν θέλετε. Θα χρησιμοποιήσουμε ένα παράδειγμα συμβολοσειράς και θα το δρομολογήσουμε στην εντολή sed για λόγους απεικόνισης. Μπορείτε να διαγράψετε έναν συγκεκριμένο χαρακτήρα από κάποιο είδος συμβολοσειράς με sed. Έτσι, έχουμε χρησιμοποιήσει την απλή γραμμή μιας συμβολοσειράς μέσα στην πρόταση ηχώ. Χρησιμοποιήσαμε το sed για να αφαιρέσουμε το γράμμα Α από την αναφερόμενη συμβολοσειρά. Βεβαιωθείτε ότι ακολουθείτε τη σύνταξη ‘s/string_to_be_removed //’. Η έξοδος δείχνει ότι το γράμμα Α έχει αφαιρεθεί.

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

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

Μέθοδος 04: Χρήση του Awk

Το Awk είναι μια εξελιγμένη γλώσσα δέσμης ενεργειών που μπορεί να χρησιμοποιηθεί για να ταιριάζει με μοτίβα και να επεξεργάζεται κείμενα. Μπορείτε να χρησιμοποιήσετε το Awk για να αλλάξετε και να τροποποιήσετε την είσοδο με διάφορους διαφορετικούς τρόπους. Μπορείτε επίσης να διαγράψετε γράμματα από συμβολοσειρές χρησιμοποιώντας το awk. Το Awk φαίνεται λίγο διαφορετικό από το sed. Αυτή τη φορά αλλάξαμε τη συμβολοσειρά με την Aqsa Yasin. Η λειτουργία awk θα κάνει υποσύστημα μέσω της μεθόδου substr και θα την εκτυπώσει στο τερματικό. Το μήκος της συνάρτησης χρησιμοποιήθηκε για να δείξει τον αριθμό των γραμμάτων που αφαιρέθηκαν από την αναφερόμενη συμβολοσειρά. Εδώ, μήκος ($ 0) -5 σημαίνει να αφαιρέσετε τους τελευταίους 5 χαρακτήρες μιας συμβολοσειράς και οι υπόλοιποι θα είναι μέρος μιας υποσύμβασης που θα εκτυπωθεί.

Προσπαθήσαμε να αφαιρέσουμε τους τελευταίους 9 χαρακτήρες από μια συμβολοσειρά Aqsa Yasin και πήραμε το A ως υπότιμο εξόδου.

Μέθοδος 05: Χρήση Cut

Το Cut φαίνεται να είναι ένα βοηθητικό πρόγραμμα γραμμής εντολών για την εξαγωγή ενός τεμαχίου κειμένου από μια τέτοια φράση ή έγγραφο και την εκτύπωσή του στην τυπική έξοδο. Αυτή η λειτουργία μπορεί επίσης να χρησιμοποιηθεί για την αφαίρεση γραμμάτων από κάποιο είδος συμβολοσειράς. Θα χρησιμοποιήσουμε ένα παράδειγμα φράσης και θα το μεταφέρουμε στην περικοπή εντολών για σκοπούς δοκιμής. Έτσι, χρησιμοποιήσαμε τη φράση Aqsa Yasin και τη μεταφέραμε στο κομμένο ερώτημα. Μετά τη σημαία –c, έχουμε ορίσει το εύρος των ευρετηρίων για μια συμβολοσειρά για να κόψει τους χαρακτήρες από μια συμβολοσειρά που αναφέρεται. Θα δείξει τους χαρακτήρες από το ευρετήριο 1 έως το ευρετήριο 5. Ο δείκτης 5 έχει αποκλειστεί εδώ. Η έξοδος εμφανίζει τους πρώτους 4 χαρακτήρες ως Aqsa.

Αυτή τη φορά θα χρησιμοποιήσουμε διαφορετικά την εντολή cut. Χρησιμοποιήσαμε τη συνάρτηση rev για να αντιστρέψουμε τη συμβολοσειρά. Μετά το αντίστροφο μιας συμβολοσειράς, θα κόψουμε τον πρώτο χαρακτήρα από μια συμβολοσειρά. Η σημαία -c2 -σημαίνει ότι η υπο -συμβολοσειρά μας θα έχει επόμενο χαρακτήρα 2. Μετά από αυτό, η αντίστροφη συνάρτηση χρησιμοποιείται ξανά για την επαναφορά της συμβολοσειράς. Έτσι, αυτή τη φορά πήραμε την αρχική σειρά με την αφαίρεση του τελευταίου χαρακτήρα.

Για να αφαιρέσετε τους τελευταίους 7 χαρακτήρες, πρέπει απλώς να αναφέρετε το -c7 -στην εντολή αποκοπής, ενώ χρησιμοποιείτε και την αντίστροφη συνάρτηση.

Συμπέρασμα:

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