Εντολή Pipe, Grep και Sort σε Linux/Unix με παραδείγματα
⚡ Έξυπνη Σύνοψη
Εντολές pipe, grep και sort σε Linux και Unix αλυσιδώνουν και φιλτράρουν κείμενο: μια pipe τροφοδοτεί την έξοδο μιας εντολής στην επόμενη, η grep αναζητά μοτίβα και η ταξινόμηση τακτοποιεί γραμμές, ενώ τα φίλτρα μετασχηματίζουν τα δεδομένα μεταξύ τους.

Οι μέθοδοι pipes, grep και sort είναι από τα πιο χρησιμοποιούμενα εργαλεία στο Linux γραμμή εντολών, επειδή σας επιτρέπουν να συνδέσετε μικρές εντολές σε μία ισχυρή ροή εργασίας. Αυτή η σελίδα εξηγεί την καθεμία με λειτουργικά παραδείγματα και στη συνέχεια δείχνει πώς τα φίλτρα τα συνδέουν μεταξύ τους.
Τι είναι το Pipe στο Linux;
Η διοχέτευση (pipe) είναι μια εντολή στο Linux που σας επιτρέπει να χρησιμοποιείτε δύο ή περισσότερες εντολές έτσι ώστε η έξοδος της μίας εντολής να χρησιμεύει ως είσοδος στην επόμενη. Με λίγα λόγια, η έξοδος κάθε διεργασίας τροφοδοτεί απευθείας ως είσοδο στην επόμενη, όπως ένας αγωγός. Το σύμβολο '|' υποδηλώνει έναν αγωγό.
Οι διοχετεύσεις σάς βοηθούν να συνδυάσετε δύο ή περισσότερες εντολές ταυτόχρονα και να τις εκτελέσετε διαδοχικά. Μπορείτε να χρησιμοποιήσετε ισχυρές εντολές που εκτελούν σύνθετες εργασίες σε χρόνο μηδέν.
Ας το καταλάβουμε με ένα παράδειγμα.
Όταν χρησιμοποιείτε την εντολή 'cat' για να προβάλετε ένα αρχείο που εκτείνεται σε πολλές σελίδες, η προτροπή μεταβαίνει γρήγορα στην τελευταία σελίδα του αρχείου και δεν βλέπετε το περιεχόμενο στη μέση.
Για να το αποφύγετε αυτό, μπορείτε να μετατρέψετε την έξοδο της εντολής 'cat' σε 'less', η οποία σας εμφανίζει μόνο ένα μήκος κύλισης περιεχομένου κάθε φορά.
cat filename | less
Ένα παράδειγμα θα το έκανε σαφές. Το παρακάτω διάγραμμα δείχνει πώς ένας αγωγός μεταδίδει την έξοδο μιας εντολής στην επόμενη.
εντολές 'pg' και 'more'
Αντί για το 'less', μπορείτε επίσης να χρησιμοποιήσετε την εντολή pg ή more:
cat Filename | pg
or
cat Filename | more
Στη συνέχεια, μπορείτε να δείτε το αρχείο σε εύπεπτα τμήματα και να κάνετε κύλιση προς τα κάτω πατώντας απλώς το πλήκτρο Enter. Το παρακάτω στιγμιότυπο οθόνης δείχνει ένα αρχείο με την εντολή more.
Η εντολή «grep».
Ας υποθέσουμε ότι θέλετε να αναζητήσετε συγκεκριμένες πληροφορίες, όπως έναν ταχυδρομικό κώδικα, σε ένα αρχείο κειμένου.
Μπορείτε να κάνετε γρήγορη αναζήτηση στο περιεχόμενο μόνοι σας χειροκίνητα tracτις πληροφορίες. Μια καλύτερη επιλογή είναι να χρησιμοποιήσετε το grep εντολή. Σαρώνει το έγγραφο για τις επιθυμητές πληροφορίες και παρουσιάζει το αποτέλεσμα στη μορφή που θέλετε.
Σύνταξη:
grep search_string
Ας το δούμε στην πράξη. Το παρακάτω στιγμιότυπο οθόνης δείχνει το αποτέλεσμα της αναζήτησης.
Εδώ, η εντολή grep έχει αναζητήσει στο αρχείο 'sample' τις συμβολοσειρές 'Apple' και 'Eat'. Οι ακόλουθες επιλογές μπορούν να χρησιμοποιηθούν με αυτήν την εντολή.
| Επιλογή | Λειτουργία |
|---|---|
| -v | Εμφανίζει όλες τις γραμμές που δεν ταιριάζουν με τη συμβολοσειρά που αναζητήσατε |
| -c | Εμφανίζει μόνο τον αριθμό των γραμμών που ταιριάζουν |
| -n | Εμφανίζει τη γραμμή που ταιριάζει και τον αριθμό της |
| -i | Ταιριάζει με κεφαλαία και πεζά γράμματα |
| -l | Εμφανίζει μόνο το όνομα του αρχείου με τη συμβολοσειρά |
Ας δοκιμάσουμε την επιλογή '-i' στο ίδιο αρχείο που χρησιμοποιήθηκε παραπάνω. Το παρακάτω στιγμιότυπο οθόνης δείχνει το αποτέλεσμα χωρίς διάκριση πεζών-κεφαλαίων.
Χρησιμοποιώντας την επιλογή '-i', το grep έχει φιλτράρει τη συμβολοσειρά 'a' (χωρίς διάκριση πεζών-κεφαλαίων) από όλες τις γραμμές.
Η εντολή "ταξινόμηση".
Αυτή η εντολή βοηθά στην αλφαβητική ταξινόμηση των περιεχομένων ενός αρχείου.
Η σύνταξη αυτής της εντολής είναι:
sort Filename
Θεωρήστε τα περιεχόμενα ενός αρχείου, που φαίνεται με την cat παρακάτω.
Η εκτέλεση της εντολής ταξινόμησης ταξινομεί αυτές τις γραμμές σε αλφαβητική σειρά, όπως φαίνεται παρακάτω.
Υπάρχουν επίσης επεκτάσεις σε αυτήν την εντολή, οι οποίες παρατίθενται παρακάτω.
| Επιλογή | Λειτουργία |
|---|---|
| -r | Reverseταξινόμηση |
| -n | Ταξινόμηση αριθμητικά |
| -f | Ταξινόμηση χωρίς διάκριση πεζών-κεφαλαίων |
Το παρακάτω παράδειγμα δείχνει την αντίστροφη ταξινόμηση των περιεχομένων στο αρχείο 'abc'.
Τι είναι το φίλτρο;
Το Linux έχει πολλές εντολές φιλτραρίσματος όπως awk, grep, sed, spell και wc. Ένα φίλτρο λαμβάνει είσοδο από μία εντολή, κάνει κάποια επεξεργασία και δίνει έξοδο.
Όταν κάνετε pipe δύο εντολές, η «φιλτραρισμένη» έξοδος της πρώτης εντολής δίνεται στην επόμενη. Το παρακάτω διάγραμμα δείχνει πώς ένα φίλτρο εντάσσεται σε μια pipeline.
Ας το κατανοήσουμε αυτό με τη βοήθεια ενός παραδείγματος. Έχουμε το ακόλουθο αρχείο 'sample', το οποίο φαίνεται με την cat παρακάτω.
Θέλουμε να επισημάνουμε μόνο τις γραμμές που δεν περιέχουν τον χαρακτήρα 'a', αλλά το αποτέλεσμα θα πρέπει να είναι σε αντίστροφη σειρά. Για αυτό, μπορεί να χρησιμοποιηθεί η ακόλουθη σύνταξη:
cat sample | grep -v a | sort -r
Ας δούμε το αποτέλεσμα, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.







.png)
.png)

