|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Κεφάλαιο 7 Λίγα λόγια για την εντολή sort Η εντολή sort χρησιμοποιείται για να ταξινομήσουμε το περιεχόμενο ενός αρχείου (π.χ. κατά αύξουσα σειρά). Η εντολή sort συντάσσεται στο τερματικό των linux ως εξής.
sort "όνομα αρχείου"
Ας δούμε ένα παράδειγμα, έστω ότι έχουμε δημιουργήσει ένα αρχείο με το όνομα sortfile το οποίο έχει τα εξής περιεχόμενα:
Unix
Το αποτέλεσμα της εντολής sort θα ταξινομήσει τα παραπάνω στοιχεία κατά αλφαβητική σειρά.
Ταξινόμηση περιεχομένων και αφαίρεση διπλότυπων εγγραφών με την sort Στο παραπάνω παράδειγμα είδαμε ότι εμφανίζεται 2 φορές η λέξη Linux. Με την επιλογή u μπορούμε να ταξινομήσουμε ένα αρχείο και να αφαιρέσει διπλότυπες λέξεις. Στο τερματικό των Linux θα μας εμφανίσει τα εξής:
Ταξινόμηση αριθμητικών περιεχομένων Ας δούμε ένα άλλο παράδειγμα. Έστω ένα αρχείο που περιέχει τους αριθμούς 5, 1, 4, 6, 3, 2. Με την εντολή sortfile μπορούμε να ταξινομήσουμε τα περιεχόμενα αυτού του αρχείου κατά αριθμητική σειρά.
Όπως παρατηρούμε τα δεδομένα ταξινομήθηκαν με βάση την αριθμητική τους σειρά. Ας δούμε όμως πάλι το ίδιο παράδειγμα αλλά με διαφορετικούς αριθμούς. Ας υποθέσουμε ότι έχουμε ένα αρχείο που περιέχει μερικούς διψήφιους αριθμούς 20, 19, 5, 49 και 200 το αποτέλεσμα που θα δούμε είναι.
Σε αυτό το παράδειγμα παρατηρούμε ότι αμέσως μετά το 20 ακολουθεί το 200 και μετά το 49 ακολουθεί το 5. Αυτό είναι απόλυτα φυσιολογικό καθότι η ταξινόμηση των δεδομένων γίνεται με βάση τον πρώτο αριθμό (όπου στην περίπτωση του 200 είναι το 2 και στην περίπτωση του 49 το 4). Συνεπώς οτιδήποτε υπάρχει μετά τον πρώτο αριθμό θα αγνοηθεί. Μπορούμε όμως να προσθέσουμε την επιλογή -n στην εντολή sort οπού μας δίνει την δυνατότητα να ταξινομήσουμε κανονικά τα αριθμητικά μας δεδομένα.
Ας δούμε επίσης άλλο ένα παράδειγμα ας υποθέσουμε ένα αρχείο το οποίο περιέχει τους float αριθμούς 2.333, 4.356, 1.535, 3.676 και 5.436. Το αποτέλεσμα θα έχει ως εξής.
Όπως παρατηρούμε τα δεδομένα μας ταξινομήθηκαν από τον μικρότερο αριθμό έως και τον μέγιστο. Τι θα συμβεί όμως αν θέλουμε τα αριθμητικά μας δεδομένα να αριθμηθούν από το μεγαλύτερο προς το μικρότερο. Προφανώς και η επιλογή -n δεν μπορεί να μας βοηθήσει εκεί οπότε θα χρησιμοποιήσουμε την επιλογή -nr.
Όπως παρατηρούμε τα δεδομένα μας ταξινομήθηκαν από τον μεγαλύτερο αριθμό έως και τον μικρότερο. Σε αυτό το σημείο ας δούμε πως γίνεται η αριθμητική ταξινόμηση 2 αρχείων. Ταξινόμηση αριθμητικών περιεχομένων μεταξύ 2 αρχείων Έστω 2 αρχεία sortfile1 και sortfile2 τα οποία περιέχουν τα εξής αριθμητικά δεδομένα
Μπορούμε λοιπόν με την την εντολή sort -n μπορούμε να ταξινομήσουμε τα περιεχόμενα αυτών των 2 αρχείων ως εξής.
Παρατηρούμε όμως ότι υπάρχουν διπλότυπα στοιχεία μεταξύ αυτών των δύο αρχείων. Με την επιλογή -nu μπορούμε επίσης να ταξινομήσουμε τα αριθμητικά δεδομένα δύο αρχείων και να αφαιρέσουμε διπλότυπα δεδομένα που υπάρχουν μεταξύ των 2 αυτών αρχείων.
Ταξινόμηση αλφαριθμητικών δεδομένων Ας υποθέσουμε ένα αρχείο το οποίο περιέχει τα εξής δεδομένα:
Παρατηρούμε ότι τα δεδομένα μας αποτελούνται από λέξεις και αριθμούς όπου διαχωρίζονται με κόμμα. Οπότε στην περίπτωση αυτή μπορούμε με την εντολή sort να ταξινομήσουμε τα δεδομένα μας είτε αριθμητικά (δηλαδή με βάση τα δεδομένα που υπάρχουν μετά το κόμμα) είτε αλφαβητικά (δηλαδή με βάση τα δεδομένα που υπάρχουν πριν το κόμμα)
Με τον παραπάνω τρόπο ταξινομούμε τα δεδομένα μας με βάση τα δεδομένα που υπάρχουν πριν το κόμμα (δηλαδή κατά αλφαβητική σειρά)
Με τον παραπάνω τρόπο ταξινομούμε τα δεδομένα μας με βάση τα δεδομένα που υπάρχουν μετά το κόμμα (δηλαδή κατά αριθμητική σειρά και με βάση τον πρώτο αριθμό)
Με τον παραπάνω τρόπο ταξινομούμε τα δεδομένα μας με βάση τα δεδομένα που υπάρχουν μετά το κόμμα (δηλαδή κατά αριθμητική σειρά με βάση τον συνολικό αριθμό)
Με τον παραπάνω τρόπο ταξινομούμε αλφαβητικά τα δεδομένα μας και αφαιρούμε τυχόν διπλότυπα δεδομένα.
Με τον παραπάνω τρόπο ταξινομούμε τα δεδομένα μας με βάση τα δεδομένα που υπάρχουν μετά το κόμμα (δηλαδή κατά αριθμητική σειρά με βάση τον συνολικό αριθμό από τον μεγαλύτερο έως και τον μικρότερο). Τελευταία ενημέρωση: 11/05/2018 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
☰ | |