Android

Tr εντολή στο linux με παραδείγματα

The mind behind Linux | Linus Torvalds

The mind behind Linux | Linus Torvalds

Πίνακας περιεχομένων:

Anonim

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

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

Σε αυτό το σεμινάριο, θα σας δείξουμε πώς να χρησιμοποιήσετε την εντολή tr μέσω πρακτικών παραδειγμάτων και λεπτομερών εξηγήσεων των πιο κοινών επιλογών.

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

Η σύνταξη για την εντολή tr έχει ως εξής:

tr OPTION… SET1

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

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

Στο παρακάτω παράδειγμα, το tr θα αντικαταστήσει όλους τους χαρακτήρες από την τυπική είσοδο (linuxize), χαρτογραφώντας τους χαρακτήρες από το πρώτο σετ με τις αντίστοιχες από το δεύτερο σετ.

echo 'linuxize' | tr 'lin' 'red'

Κάθε εμφάνιση του l αντικαθίσταται με r , i με e , και n με d :

reduxeze

Τα σύνολα χαρακτήρων μπορούν επίσης να ορίζονται χρησιμοποιώντας εύρη χαρακτήρων. Για παράδειγμα, αντί να γράφετε:

echo 'linuxize' | tr 'lmno' 'wxyz'

μπορείς να χρησιμοποιήσεις:

echo 'linuxize' | tr 'ln' 'w-z'

Όταν χρησιμοποιείται η επιλογή -c (- --complement ), το tr αντικαθιστά όλους τους χαρακτήρες που δεν υπάρχουν στο SET1.

Στο παρακάτω παράδειγμα όλοι οι χαρακτήρες εκτός από το "li" θα αντικατασταθούν με τον τελευταίο χαρακτήρα από το δεύτερο σετ:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

Όπως ίσως έχετε παρατηρήσει, η παραπάνω έξοδος έχει έναν ακόμη πιο ορατό χαρακτήρα από την είσοδο. Αυτό οφείλεται στο γεγονός ότι η εντολή echo εκτυπώνει έναν αόρατο χαρακτήρα νέας γραμμής που επίσης αντικαθίσταται με y . Για να επαναφέρετε μια συμβολοσειρά χωρίς νέα γραμμή, χρησιμοποιήστε την επιλογή -n .

Η επιλογή -d (- --delete ) λέει στο tr να διαγράψει τους χαρακτήρες που καθορίζονται στο SET1. Κατά τη διαγραφή χαρακτήρων χωρίς συμπίεση, καθορίστε μόνο ένα σύνολο.

Η παρακάτω εντολή θα αφαιρέσει τους χαρακτήρες l , i και z :

echo 'Linuxize' | tr -d 'liz'

Ο χαρακτήρας L δεν διαγράφεται επειδή η είσοδος περιλαμβάνει κεφαλαίο L ενώ ο χαρακτήρας l στο SET είναι πεζά.

Lnuxe

Η επιλογή -s (- --squeeze-repeats ) αντικαθιστά μια σειρά επαναλαμβανόμενων συμβάντων με το σύνολο χαρακτήρων στο τελευταίο SET.

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

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Όταν χρησιμοποιείται το SET2, η ακολουθία του χαρακτήρα που καθορίζεται στο SET1 αντικαθίσταται από το SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

Η επιλογή -t ( --truncate-set1 ) αναγκάζει το tr να κόψει το SET1 στο μήκος του SET2 πριν κάνει περαιτέρω επεξεργασία.

Από προεπιλογή, εάν το SET1 είναι μεγαλύτερο από το SET2, το tr θα επαναχρησιμοποιήσει τον τελευταίο χαρακτήρα του SET2. Ακολουθεί ένα παράδειγμα:

echo 'Linux ize' | tr 'abcde' '12'

Η έξοδος δείχνει ότι ο χαρακτήρας e από το SET1 αντιστοιχεί στον τελευταίο χαρακτήρα του SET2, ο οποίος είναι 2 :

Linux iz2

Τώρα, χρησιμοποιήστε την ίδια εντολή με την επιλογή -t :

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

Μπορείτε να δείτε ότι οι τρεις τελευταίοι χαρακτήρες του SET1 αφαιρούνται. Το SET1 γίνεται «ab», το ίδιο μήκος με το SET2, και δεν γίνεται αντικατάσταση.

Συνδυασμός επιλογών

Η εντολή tr σας επιτρέπει επίσης να συνδυάσετε τις επιλογές της. Για παράδειγμα, η ακόλουθη εντολή αντικαθιστά πρώτα όλους τους χαρακτήρες εκτός από το i με το 0 και στη συνέχεια πιέζει τους επαναλαμβανόμενους χαρακτήρες 0 :

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Παραδείγματα εντολών Tr

Σε αυτή την ενότητα, θα καλύψουμε μερικά παραδείγματα κοινών χρήσεων της εντολής tr .

Μετατρέψτε τα πεζά σε κεφαλαία

Η μετατροπή πεζών σε κεφαλαία ή αντίστροφη είναι μία από τις τυπικές περιπτώσεις χρήσης της εντολής tr . αντιστοιχεί σε όλους τους πεζούς χαρακτήρες και αντιστοιχεί σε όλους τους κεφαλαίους χαρακτήρες.

echo 'Linuxize' | tr '' ''

LINUXIZE

Αντί των κατηγοριών χαρακτήρων, μπορείτε επίσης να χρησιμοποιήσετε σειρές:

echo 'Linuxize' | tr 'az' 'A-Z'

Για να μετατρέψετε το κεφαλαίο σε πεζά, απλά μεταβείτε στις θέσεις των σετ.

Καταργήστε όλους τους μη αριθμητικούς χαρακτήρες

Η ακόλουθη εντολή καταργεί όλους τους μη αριθμητικούς χαρακτήρες:

echo "my phone is 123-456-7890" | tr -cd

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

1234567890

Βάλτε κάθε λέξη σε μια νέα γραμμή

Για να θέσουμε κάθε λέξη σε μια νέα γραμμή, πρέπει να ταιριάξουμε όλους τους μη αλφαριθμητικούς χαρακτήρες και να τις αντικαταστήσουμε με μια νέα γραμμή:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

Αφαιρέστε τις κενές γραμμές

Για να διαγράψετε τις κενές γραμμές, απλώς πιέστε τους επαναλαμβανόμενους χαρακτήρες νέας γραμμής:

tr -s '\n' < file.txt > new_file.txt

Στην παραπάνω εντολή χρησιμοποιούμε το σύμβολο ανακατεύθυνσης < για να μεταβιβάσουμε το περιεχόμενο του file.txt στην εντολή tr . Η ανακατεύθυνση > γράφει την έξοδο της εντολής στο new_file.txt .

Εκτυπώστε τους καταλόγους $PATH σε ξεχωριστή γραμμή

Η περιβαλλοντική μεταβλητή $PATH είναι μια λίστα καταλόγων που οριοθετείται από το παχέος εντέρου που αναφέρει στο κέλυφος τους καταλόγους για την αναζήτηση εκτελέσιμων αρχείων όταν πληκτρολογείτε μια εντολή.

Για την εκτύπωση κάθε καταλόγου σε ξεχωριστή γραμμή πρέπει να ταιριάξουμε το τετράγωνο (:) και να το αντικαταστήσουμε με τη νέα γραμμή:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

συμπέρασμα

tr είναι μια εντολή για τη μετάφραση ή τη διαγραφή χαρακτήρων.

Παρόλο που είναι πολύ χρήσιμο, το tr μπορεί να λειτουργήσει μόνο με μεμονωμένους χαρακτήρες. Για πιο περίπλοκη αντιστοίχιση προτύπων και χειρισμού συμβολοσειρών, θα πρέπει να χρησιμοποιήσετε sed ή awk .

tr τερματικό