14 Χρήσιμα Παραδείγματα Εντολής «ταξινόμησης» Linux - Μέρος 1


Η εντολή «ταξινόμηση» είναι ένα πρόγραμμα Linux που χρησιμοποιείται για την εκτύπωση γραμμών αρχείων κειμένου εισόδου και τη συνένωση όλων των αρχείων με ταξινομημένη σειρά. Η εντολή Sort καταλαμβάνει κενό χώρο ως διαχωριστικό πεδίου και ολόκληρο το αρχείο εισόδου ως κλειδί ταξινόμησης. Είναι σημαντικό να παρατηρήσετε ότι η εντολή ταξινόμησης δεν ταξινομεί πραγματικά τα αρχεία αλλά εκτυπώνει μόνο την ταξινομημένη έξοδο μέχρι να ανακατευθύνετε την έξοδο.

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

1. Δημιουργία αρχείου κειμένου με καθορισμένο περιεχόμενο

Αρχικά, θα δημιουργήσουμε ένα αρχείο κειμένου, με το όνομα "tecmint.txt", το οποίο θα χρησιμοποιηθεί για την εκτέλεση παραδειγμάτων εντολών "ταξινόμηση" στον κατάλογο εργασίας μας για αυτήν την εργασία είναι " /home/$USER/Desktop/tecmint'.

Η επιλογή «-e» στην παρακάτω εντολή επιτρέπει την ερμηνεία της ανάστροφης κάθετο και το /n λέει στην εντολή echo να γράψει κάθε συμβολοσειρά σε μια νέα γραμμή.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Προβολή περιεχομένων αρχείου

Πριν ξεκινήσουμε με την εντολή «ταξινόμηση», ας ρίξουμε μια ματιά στα περιεχόμενα του αρχείου και πώς εμφανίζεται χρησιμοποιώντας την ακόλουθη εντολή cat.

cat tecmint.txt

3. Ταξινόμηση του περιεχομένου του αρχείου

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

sort tecmint.txt

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

4. Ανακατεύθυνση ταξινομημένης εξόδου σε νέο αρχείο

Η ακόλουθη εντολή χρησιμοποιείται για την ταξινόμηση των γραμμών του αρχείου κειμένου "tecmint.txt" με αλφαβητική σειρά και στη συνέχεια ανακατευθύνει την ταξινομημένη έξοδο σε ένα νέο αρχείο με το όνομα "sorted.txt ", που σημαίνει ότι το αρχικό αρχείο παραμένει αμετάβλητο και το ταξινομημένο περιεχόμενο αποθηκεύεται σε ξεχωριστό αρχείο.

Για να επαληθεύσετε το περιεχόμενο, χρησιμοποιήστε την εντολή cat.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Ταξινόμηση των περιεχομένων των αρχείων με αντίστροφη σειρά

Η ακόλουθη εντολή χρησιμοποιείται για την ταξινόμηση των γραμμών του αρχείου κειμένου "tecmint.txt" με αντίστροφη σειρά, πράγμα που σημαίνει ότι θα τακτοποιήσει τις γραμμές σε φθίνουσα αλφαβητική σειρά και η ταξινομημένη έξοδος θα ανακατευθυνθεί στη συνέχεια σε μια νέα αρχείο με το όνομα "reversesorted.txt"

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Αποθήκευση λίστας αρχείων και καταλόγων

Η ακόλουθη εντολή χρησιμοποιείται για τη λίστα των περιεχομένων του αρχικού καταλόγου του χρήστη (“/home/$USER“) σε μια λεπτομερή προβολή μεγάλης μορφής χρησιμοποιώντας την εντολή ls και, στη συνέχεια, ανακατευθύνει αυτήν τη λίστα καταλόγου σε ένα αρχείο κειμένου με το όνομα "lsl.txt" που βρίσκεται στην επιφάνεια εργασίας του χρήστη, συγκεκριμένα στον κατάλογο "tecmint".

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

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

7. Ταξινόμηση «περιεχομένων αρχείων με βάση το δεύτερο πεδίο».

Η ακόλουθη εντολή χρησιμοποιείται για την ταξινόμηση των περιεχομένων του αρχείου "lsl.txt" με βάση τις τιμές στο δεύτερο πεδίο κάθε γραμμής. Η επιλογή '-n' υποδεικνύει μια αριθμητική ταξινόμηση, αντιμετωπίζοντας το δεύτερο πεδίο ως αριθμούς και όχι ως κείμενο.

Η επιλογή '-k2' καθορίζει ότι θέλουμε να κάνουμε ταξινόμηση με βάση το δεύτερο πεδίο. Εκτελώντας αυτήν την εντολή, θα λάβετε μια ταξινομημένη λίστα με τις γραμμές στο "lsl.txt", με τα κριτήρια ταξινόμησης να είναι οι αριθμητικές τιμές στο δεύτερο πεδίο κάθε γραμμής.

sort -nk2 lsl.txt

8. Ταξινόμηση του περιεχομένου του αρχείου με βάση το ένατο πεδίο

Η ακόλουθη εντολή χρησιμοποιείται για την ταξινόμηση των γραμμών στο αρχείο "lsl.txt" με βάση τις τιμές στο ένατο πεδίο κάθε γραμμής σε αύξουσα σειρά. Η επιλογή '-k9' καθορίζει ότι η ταξινόμηση πρέπει να γίνει με βάση το ένατο πεδίο.

sort -k9 lsl.txt

9. Ταξινόμηση αρχείων κατά μέγεθος αρχείου

Η ακόλουθη εντολή συνδυάζει τις εντολές 'ls' και 'sort' για να παραθέσει τα περιεχόμενα του οικιακού καταλόγου του χρήστη σε μορφή μεγάλης λίστας και, στη συνέχεια, διοχετεύει τη λίστα καταλόγου σε 'sort -nk5', που ταξινομεί τη λίστα με βάση τις τιμές στην πέμπτη στήλη, η οποία αντιπροσωπεύει τα μεγέθη αρχείων.

ls -l /home/$USER | sort -nk5

10. Αφαίρεση διπλότυπων γραμμών στο αρχείο

Η ακόλουθη εντολή ταξινομεί τις γραμμές στο αρχείο "tecmint.txt" με αύξουσα αλφαβητική σειρά και αφαιρεί τυχόν διπλότυπες γραμμές χρησιμοποιώντας την επιλογή '-u', η οποία σημαίνει "unique" και διασφαλίζει ότι οι μοναδικές γραμμές διατηρούνται στην ταξινομημένη έξοδο.

cat tecmint.txt
sort -u tecmint.txt

Κανόνες μέχρι στιγμής (τι έχουμε παρατηρήσει):

  • Οι γραμμές που ξεκινούν με αριθμούς προτιμώνται στη λίστα και βρίσκονται στην κορυφή μέχρι να οριστεί διαφορετικά (-r).
  • Οι γραμμές που ξεκινούν με πεζά γράμματα προτιμώνται στη λίστα και βρίσκονται στην κορυφή μέχρι να οριστεί διαφορετικά (-r).
  • Τα περιεχόμενα παρατίθενται με βάση την εμφάνιση αλφαβήτων στο λεξικό μέχρι να οριστεί διαφορετικά (-r).
  • Η εντολή ταξινόμησης από προεπιλογή αντιμετωπίζει κάθε γραμμή ως συμβολοσειρά και στη συνέχεια την ταξινομεί ανάλογα με την εμφάνιση αλφαβήτων στο λεξικό (Αριθμητική προτίμηση, βλ. κανόνα – 1) μέχρι να οριστεί διαφορετικά.

11. Ανακατεύθυνση της καταχώρισης καταλόγου στο αρχείο

Η ακόλουθη εντολή παραθέτει τα περιεχόμενα του αρχικού καταλόγου του χρήστη σε μεγάλη μορφή, συμπεριλαμβανομένων κρυφών αρχείων και καταλόγων και, στη συνέχεια, ανακατευθύνει τη λίστα καταλόγου σε ένα αρχείο κειμένου με το όνομα «lsla.txt» που βρίσκεται στην επιφάνεια εργασίας του χρήστη εντός τον κατάλογο "tecmint".

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Όσοι γνωρίζουν την εντολή ls κατανοούν ότι το 'ls -lA' ισοδυναμεί με το 'ls -l' συν κρυφά αρχεία. Ως αποτέλεσμα, το μεγαλύτερο μέρος των περιεχομένων σε αυτές τις δύο εντολές θα είναι το ίδιο.

12. Ταξινόμηση Περιεχομένων Αρχείων

Η ακόλουθη εντολή ταξινομεί τα περιεχόμενα δύο αρχείων κειμένου, «lsl.txt» και «lsla.txt», σε αύξουσα αλφαβητική σειρά και, στη συνέχεια, συνδυάζει και εμφανίζει το ταξινομημένο περιεχόμενο σε το τερματικό.

sort lsl.txt lsla.txt

Παρατηρήστε την επανάληψη αρχείων και φακέλων.

13. Αφαίρεση διπλότυπων γραμμών στο αρχείο

Η ακόλουθη εντολή συγχωνεύει και ταξινομεί τα περιεχόμενα δύο αρχείων κειμένου, «lsl.txt» και «lsla.txt», σε αύξουσα αλφαβητική σειρά, ενώ αφαιρεί τυχόν διπλότυπες γραμμές χρησιμοποιώντας το Η επιλογή '-u', η οποία διασφαλίζει ότι οι μοναδικές γραμμές διατηρούνται στην ταξινομημένη έξοδο.

sort -u lsl.txt lsla.txt

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

14. Ταξινόμηση εξόδου ανά πολλαπλά πεδία με χρήση προσαρμοσμένου διαχωριστή

Η ακόλουθη εντολή συνδυάζει τις εντολές "ls" και "sort" για να παραθέσει τα περιεχόμενα του οικιακού καταλόγου του χρήστη σε μεγάλη μορφή και, στη συνέχεια, διοχετεύει τη λίστα καταλόγου στο "< Εντολήsort', η οποία ταξινομεί την έξοδο με βάση συγκεκριμένες στήλες και πεδία.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Ακολουθεί μια ανάλυση της εντολής:

  • -t "," – καθορίζει ότι ένα κόμμα (",") χρησιμοποιείται ως οριοθέτης πεδίου.
  • -nk2,5 – υποδεικνύει ταξινόμηση κατά μια αριθμητική τιμή στις στήλες 2 έως 5, οι οποίες συνήθως αντιπροσωπεύουν δικαιώματα και λεπτομέρειες ιδιοκτησίας.
  • -k9 – ταξινομεί περαιτέρω το αποτέλεσμα με βάση την ένατη στήλη, η οποία αντιπροσωπεύει τα μεγέθη αρχείων.

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

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