Linux Professional Institute Learning Logo.
Mετάβαση στο κύριο περιεχόμενο
  • Αρχική
    • Διαθέσιμοι Πόροι
    • Μαθησιακά Υλικά LPI
    • Γίνε Συνεργάτης
    • Συνεργάτες Εκδόσεων
    • Γίνε Συνεργάτης Εκδόσεων
    • Σχετικά
    • FAQ
    • Συνεργάτες
    • Roadmap
    • Επικοινωνία
  • LPI.org
3.2 Μάθημα 2
Θέμα 1: Η κοινότητα Linux και μια καριέρα στον Ανοιχτό Κώδικα
1.1 Εξέλιξη του Linux και Δημοφιλή Λειτουργικά Συστήματα
  • 1.1 Μάθημα 1
1.2 Κύριες Εφαρμογές Ανοιχτού Κώδικα
  • 1.2 Μάθημα 1
1.3 Λογισμικό Ανοιχτού Κώδικα και Αδειοδότηση
  • 1.3 Μάθημα 1
1.4 Δεξιότητες ICT και Εργασία στο Linux
  • 1.4 Μάθημα 1
Θέμα 2: Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux
2.1 Βασικά Στοιχεία Γραμμής Εντολών
  • 2.1 Μάθημα 1
  • 2.1 Μάθημα 2
2.2 Χρήση της Γραμμής Εντολών για Λήψη Βοήθειας
  • 2.2 Μάθημα 1
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων
  • 2.3 Μάθημα 1
  • 2.3 Μάθημα 2
2.4 Δημιουργία, Μετακίνηση και Διαγραφή Αρχείων
  • 2.4 Μάθημα 1
Θέμα 3: Η Δύναμη της Γραμμής Εντολών
3.1 Αρχειοθέτηση Αρχείων στη Γραμμή Εντολών
  • 3.1 Μάθημα 1
3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  • 3.2 Μάθημα 1
  • 3.2 Μάθημα 2
3.3 Μετατροπή Εντολών σε Σενάριο
  • 3.3 Μάθημα 1
  • 3.3 Μάθημα 2
Θέμα 4: Το Λειτουργικό Σύστημα Linux
4.1 Επιλογή Λειτουργικού Συστήματος
  • 4.1 Μάθημα 1
4.2 Κατανόηση του Υλικού του Υπολογιστή
  • 4.2 Μάθημα 1
4.3 Πού Αποθηκεύονται τα Δεδομένα
  • 4.3 Μάθημα 1
  • 4.3 Μάθημα 2
4.4 Ο Υπολογιστής σας στο Δίκτυο
  • 4.4 Μάθημα 1
Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  • 5.1 Μάθημα 1
5.2 Δημιουργία Χρηστών και Ομάδων
  • 5.2 Μάθημα 1
5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  • 5.3 Μάθημα 1
5.4 Ειδικοί Κατάλογοι και Αρχεία
  • 5.4 Μάθημα 1
How to get certified
  1. Θέμα 3: Η Δύναμη της Γραμμής Εντολών
  2. 3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  3. 3.2 Μάθημα 2

3.2 Μάθημα 2

Πιστοποιητικό:

Linux Essentials

Έκδοση:

1.6

Θέμα:

3 Η Δύναμη της Γραμμής Εντολών

Σκοπός:

3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία

Μάθημα:

2 απο 2

Εισαγωγή

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

Αναζήτηση σε Αρχεία με grep

Το πρώτο εργαλείο που θα συζητήσουμε σε αυτό το μάθημα είναι η εντολή grep. Το grep είναι η συντομογραφία της φράσης “global regular expression print” και η κύρια λειτουργία του είναι η αναζήτηση εντός αρχείων για το καθορισμένο μοτίβο. Η εντολή εξάγει τη γραμμή που περιέχει το καθορισμένο μοτίβο επισημασμένο με κόκκινο.

$ grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1001:1001:User,,,,:/home/user:/bin/bash

Το grep, όπως οι περισσότερες εντολές, μπορεί επίσης να τροποποιηθεί χρησιμοποιώντας επιλογές. Εδώ είναι οι πιο συνηθισμένες:

-i

η αναζήτηση δεν κάνει διάκριση πεζών-κεφαλαίων

-r

η αναζήτηση είναι αναδρομική (αναζητά σε όλα τα αρχεία του δεδομένου καταλόγου και των υποκαταλόγων του)

-c

η αναζήτηση μετράει τον αριθμό των αντιστοιχιών

-v

αντιστρέψτε την αντιστοίχιση, για να εκτυπώσετε γραμμές που δεν ταιριάζουν με τον όρο αναζήτησης

-E

ενεργοποιεί τις εκτεταμένες regular expressions (απαιτούνται από ορισμένους από τους πιο προχωρημένους μεταχαρακτήρες όπως | , + και ?)

Το grep έχει πολλές άλλες χρήσιμες επιλογές. Συμβουλευτείτε τη σελίδα man για να μάθετε περισσότερα σχετικά με αυτό.

Regular Expressions

Το δεύτερο εργαλείο είναι πολύ ισχυρό. Χρησιμοποιείται για να περιγράψει κομμάτια κειμένου μέσα σε αρχεία, που ονομάζονται επίσης regular expressions. Οι regular expressions είναι εξαιρετικά χρήσιμες για την εξαγωγή δεδομένων από αρχεία κειμένου με την κατασκευή μοτίβων. Χρησιμοποιούνται συνήθως μέσα σε scripts ή κατά τον προγραμματισμό με γλώσσες υψηλού επιπέδου, όπως η Perl ή η Python.

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

Η ακόλουθη λίστα εξηγεί τους μετα-χαρακτήρες regular expressions που χρησιμοποιούνται για να σχηματίσουν τα μοτίβα.

.

Αντιστοίχιση οποιουδήποτε μεμονωμένου χαρακτήρα (εκτός από τη νέα γραμμή)

[abcABC]

Αντιστοίχιση οποιουδήποτε χαρακτήρα μέσα στις αγκύλες

[^abcABC]

Αντιστοίχιση οποιουδήποτε χαρακτήρα εκτός από αυτούς που βρίσκονται στις αγκύλες

[a-z]

Αντιστοίχιση οποιουδήποτε χαρακτήρα στο εύρος

[^a-z]

Αντιστοίχιση οποιουδήποτε χαρακτήρα εκτός από αυτούς του εύρους

sun|moon

Εύρεση οποιασδήποτε από τις συμβολοσειρές που αναφέρονται

^

Αρχή γραμμής

$

Τέλος γραμμής

Όλες οι λειτουργίες των regular expressions μπορούν να υλοποιηθούν και μέσω του 'grep'. Μπορείτε να δείτε ότι στο παραπάνω παράδειγμα, η λέξη δεν περιβάλλεται από διπλά εισαγωγικά. Για να αποτρέψετε την ερμηνεία του ίδιου του μεταχαρακτήρα από το shell, συνιστάται το πιο περίπλοκο μοτίβο να είναι μεταξύ διπλών εισαγωγικών (" "). Για λόγους εξάσκησης, θα χρησιμοποιούμε διπλά εισαγωγικά κατά την εφαρμογή regular expressions. Τα άλλα εισαγωγικά διατηρούν την κανονική τους λειτουργικότητα, όπως συζητήθηκε σε προηγούμενα μαθήματα.

Τα ακόλουθα παραδείγματα τονίζουν τη λειτουργικότητα των regular expressions. Θα χρειαστούμε δεδομένα μέσα στο αρχείο, επομένως το επόμενο σύνολο εντολών απλώς προσθέτει διάφορες συμβολοσειρές στο αρχείο text.txt.

$ echo "aaabbb1" > text.txt
$ echo "abab2" >> text.txt
$ echo "noone2" >> text.txt
$ echo "class1" >> text.txt
$ echo "alien2" >> text.txt
$ cat text.txt
aaabbb1
abab2
noone2
class1
alien2

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

$ grep "ab" text.txt
aaabbb1
abab2
$ grep "[ab]" text.txt
aaabbb1
abab2
class1
alien2

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

$ grep "^a" text.txt
aaabbb1
abab2
alien2
$ grep "2$" text.txt
abab2
noone2
alien2

Εκτός από τους προηγούμενους μεταχαρακτήρες που εξηγήθηκαν, οι regular expressions έχουν επίσης μεταχαρακτήρες που επιτρέπουν τον πολλαπλασιασμό του μοτίβου που προηγείται:

*

Μηδέν ή περισσότερα από το προηγηθέν μοτίβο

+

Ένα ή περισσότερα από το προηγηθέν μοτίβο

?

Μηδέν ή ένα από το προηγηθέν μοτίβο

Για τους μεταχαρακτήρες πολλαπλασιαστές, η παρακάτω εντολή αναζητά μια συμβολοσειρά που περιέχει ab, έναν μεμονωμένο χαρακτήρα και έναν ή περισσότερους από τους χαρακτήρες που βρέθηκαν προηγουμένως. Το αποτέλεσμα δείχνει ότι το grep βρήκε τη συμβολοσειρά aaabbb1, που ταιριάζει με το τμήμα abbb καθώς και τη συμβολοσειρά abab2. Δεδομένου ότι ο χαρακτήρας + είναι ένας χαρακτήρας εκτεταμένης regular expression, πρέπει να περάσουμε την επιλογή -E στην εντολή grep.

$ grep -E "ab.+" text.txt
aaabbb1
abab2

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

Καθοδηγούμενες Ασκήσεις

Χρησιμοποιώντας grep και το αρχείο /usr/share/hunspell/en_US.dic, βρείτε τις γραμμές που ταιριάζουν με τα ακόλουθα κριτήρια:

  1. Όλες τις γραμμές που περιέχουν τη λέξη cat οπουδήποτε στη γραμμή.

  2. Όλες τις γραμμές που δεν περιέχουν κανέναν από τους ακόλουθους χαρακτήρες: sawgtfixk.

  3. Όλες τις γραμμές που ξεκινούν με οποιαδήποτε 3 γράμματα και τη λέξη dig.

  4. Όλες τις γραμμές που τελειώνουν με τουλάχιστον ένα e.

  5. Όλες τις γραμμές που περιέχουν μία από τις ακόλουθες λέξεις: org , kay ή tuna.

  6. Τον αριθμό των γραμμών που ξεκινούν με ένα ή κανένα c ακολουθούμενο από τη συμβολοσειρά ati.

Ασκήσεις Εξερεύνησης

  1. Βρείτε την regular expression που αντιστοιχεί με τις λέξεις στη γραμμή “Συμπερίληψη” και δεν ταιριάζει με αυτές της γραμμής “Εξαίρεση”:

    • Συμπερίληψη: pot, spot, apot

      Εξαίρεση: potic, spots, potatoe

    • Συμπερίληψη: arp99, apple, zipper

      Εξαίρεση: zoo, arive, attack

    • Συμπερίληψη: arcane, capper, zoology

      Εξαίρεση: air, coper, zoloc

    • Συμπερίληψη: 0th/pt, 3th/tc, 9th/pt

      Εξαίρεση: 0/nm, 3/nm, 9/nm

    • Συμπερίληψη: Hawaii, Dario, Ramiro

      Εξαίρεση: hawaii, Ian, Alice

  2. Ποια άλλη χρήσιμη εντολή χρησιμοποιείται συνήθως για την αναζήτηση μέσα στα αρχεία; Τι επιπλέον λειτουργίες έχει;

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

Σύνοψη

Σε αυτό το εργαστήριο μάθατε:

  • Mετα-χαρακτήρες regular expressions

  • Πώς να δημιουργήσετε μοτίβα με regular expressions

  • Πώς να κάνετε αναζήτηση μέσα στα αρχεία

Εντολές που χρησιμοποιήθηκαν στις ασκήσεις:

grep

Αναζητά χαρακτήρες ή συμβολοσειρές μέσα σε ένα αρχείο

Απαντήσεις στις Καθοδηγούμενες Ασκήσεις

Χρησιμοποιώντας grep και το αρχείο /usr/share/hunspell/en_US.dic, βρείτε τις γραμμές που ταιριάζουν με τα ακόλουθα κριτήρια:

  1. Όλες τις γραμμές που περιέχουν τη λέξη cat οπουδήποτε στη γραμμή.

    $ grep "cat" /usr/share/hunspell/en_US.dic
    Alcatraz/M
    Decatur/M
    Hecate/M
    ...
  2. Όλες τις γραμμές που δεν περιέχουν κανέναν από τους ακόλουθους χαρακτήρες: sawgtfixk.

    $ grep -v "[sawgtfixk]" /usr/share/hunspell/en_US.dic
    49269
    0/nm
    1/n1
    2/nm
    2nd/p
    3/nm
    3rd/p
    4/nm
    5/nm
    6/nm
    7/nm
    8/nm
    ...
  3. Όλες τις γραμμές που ξεκινούν με οποιαδήποτε 3 γράμματα και τη λέξη dig.

    $ grep "^...dig" /usr/share/hunspell/en_US.dic
    cardigan/SM
    condign
    predigest/GDS
    ...
  4. Όλες τις γραμμές που τελειώνουν με τουλάχιστον ένα e.

    $ grep -E "e+$" /usr/share/hunspell/en_US.dic
    Anglicize
    Anglophobe
    Anthropocene
    ...
  5. Όλες τις γραμμές που περιέχουν μία από τις ακόλουθες λέξεις: org , kay ή tuna.

    $ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
    Borg/SM
    George/MS
    Tokay/M
    fortunate/UY
    ...
  6. Τον αριθμό των γραμμών που ξεκινούν με ένα ή κανένα c ακολουθούμενο από τη συμβολοσειρά ati.

    $ grep -cE "^c?ati" /usr/share/hunspell/en_US.dic
    3

Απαντήσεις στις Ασκήσεις Εξερεύνησης

  1. Βρείτε την regular expression που αντιστοιχεί με τις λέξεις στη γραμμή “Συμπερίληψη” και δεν ταιριάζει με αυτές της γραμμής “Εξαίρεση”:

    • Συμπερίληψη: pot, spot, apot

      Εξαίρεση: potic, spots, potatoe

      Απάντηση: pot$

    • Συμπερίληψη: arp99, apple, zipper

      Εξαίρεση: zoo, arive, attack

      Απάντηση: p+

    • Συμπερίληψη: arcane, capper, zoology

      Εξαίρεση: air, coper, zoloc

      Απάντηση: arc|cap|zoo

    • Συμπερίληψη: 0th/pt, 3th/tc, 9th/pt

      Εξαίρεση: 0/nm, 3/nm, 9/nm

      Απάντηση: [0-9]th.+

    • Συμπερίληψη: Hawaii, Dario, Ramiro

      Εξαίρεση: hawaii, Ian, Alice

      Απάντηση: ^[A-Z]a.*i+

  2. Ποια άλλη χρήσιμη εντολή χρησιμοποιείται συνήθως για την αναζήτηση μέσα στα αρχεία; Τι επιπλέον λειτουργίες έχει;

    Η εντολή sed. Η εντολή μπορεί να βρει και να αντικαταστήσει χαρακτήρες ή σύνολα χαρακτήρων μέσα σε ένα αρχείο.

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

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

    $ cat contents.txt | tr -s " " | grep "^....rwx"

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

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Επόμενο Μάθημα

3.3 Μετατροπή Εντολών σε Σενάριο (3.3 Μάθημα 1)

Διάβασε το επόμενο μάθημα

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Το LPI είναι ένας μη κερδοσκοπικός οργανισμός.

© 2023 Το Linux Professional Institute (LPI) είναι το παγκόσμιο πρότυπο πιστοποίησης και οργανισμός υποστήριξης σταδιοδρομίας για επαγγελματίες ανοιχτού κώδικα. Με περισσότερους από 200.000 κατόχους πιστοποίησης, είναι ο πρώτος και μεγαλύτερος στον κόσμο ουδέτερος οργανισμός πιστοποιήσεων Linux και ανοιχτού κώδικα. Το LPI έχει πιστοποιημένους επαγγελματίες σε περισσότερες από 180 χώρες, παραδίδει εξετάσεις σε πολλές γλώσσες και έχει εκατοντάδες συνεργάτες εκπαίδευσης.

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

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Επικοινωνήστε Μαζί Μας
  • Πολιτική Απορρήτου και Πολιτική Cookie

Εντοπίσατε ένα λάθος ή θέλετε να βοηθήσετε στη βελτίωση αυτής της σελίδας; Παρακαλούμε ενημερώστε μας.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.