Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

1 AWK Μία εξαιρετικά δυναμική συμβολική γλώσσα προγραμματισμού και ταυτόχρονα ένα εργαλείο διαχείρισης δεδομένων. Αναζητά, τροποποιεί αρχεία, δημιουργεί reports... Ολες οι παραπάνω ενέργειες πραγματοποιούνται με την αναζήτηση patterns σε γραμμές που δίνονται στην είσοδο (αρχείο ή standard input). Alfred Aho, Peter Weinberger, Brian Kernigham. A W K

2 Η γλώσσα awk Ενα awk πρόγραμμα αποτελείται από μία ή περισσότερες εντολές της μορφής: pattern {action} Σύνταξη: awk ‘/pattern/ {action}’ input_filename Αν παραληφθεί το input_filename τότε θεωρείται το standard input. Παράδειγμα $ awk ‘/732-/ {print $1}’ phones $ awk –f awkprogram

3 Η γλώσσα awk Η awk λειτουργεί με τα πεδία των γραμμών εισόδου. Τα πεδία είναι λέξεις που διαχωρίζονται με τον χαρακτήρα του κενού ή κάποιο άλλον χαρακτήρα (field separator). Η awk θεωρεί default το χαρακτήρα του κενού. Η χρήση του option –F δίνει τη δυνατότητα προσδιορισμού άλλου χαρακτήρα ως field separator. Αναφορά στα πεδία τόσο των awk patterns όσο και των awk προγραμμάτων γίνεται με το σύμβολο του $ ακολουθούμενο από τον αριθμό του πεδίου ($1, $2 κλπ). Δεν υπάρχει περίπτωση σύγχυσης του συμβολισμού των πεδίων με αυτόν των παραμέτρων θέσης στα scripts επειδή τα πρώτα περικλείονται σε μονά εισαγωγικά ‘ ’.

4 Η γλώσσα awk - Παραδείγματα $ ls –l > newfiles 1.$ awk ‘$3 == “adm” {print}’ newfiles ίσο Ελεγχος του 3ου πεδίου κάθε γραμμής του αρχείου newfiles για το αν είναι ίσο με το pattern «adm”. Αν ναι, τότε τυπώνεται ολόκληρη η γραμμή που βρέθηκε το pattern. 2.$ awk ‘$3 ~ “adm” {print}’ newfiles περίπου ίσο Ελεγχος του 3ου πεδίου κάθε γραμμής του αρχείου newfiles για το αν είναι περίπου ίσο με το pattern «adm”, δηλαδή, αν το 3ο πεδίο περιλαμβάνει το pattern “adm”. Αν ναι, τότε τυπώνεται ολόκληρη η γραμμή που βρέθηκε το pattern.

5 Η γλώσσα awk - Παραδείγματα 3.$ awk ‘$3 ~ “adm” {print $9, $5}’ newfiles περίπου ίσο όχι Ελεγχος του 3ου πεδίου κάθε γραμμής του αρχείου newfiles για το αν είναι περίπου ίσο με το pattern “adm”, δηλαδή, αν το 3ο πεδίο περιλαμβάνει το pattern “adm”. Αν ναι, τότε τυπώνεται το 9ο και το 5ο πεδίο και όχι ολόκληρη η γραμμή που βρέθηκε το pattern. 4.$ awk ‘$3 != “root” {print}’ newfiles δεν είναι ίσο Ελεγχος του 3ου πεδίου κάθε γραμμής του αρχείου newfiles για το αν δεν είναι ίσο με το pattern “root”. Ετσι, τυπώνονται όλες οι γραμμές που δε βρέθηκε το pattern “root”.

6 5.$ awk –F: ‘$1 == “root” {print}’ /etc/passwd ίσο Ελεγχος του 1ου πεδίου κάθε γραμμής του αρχείου passwd που έχει field separator το χαρακτήρα ‘:’, για το αν είναι ίσο με το pattern “root”, δηλαδή, αν το 1ο πεδίο περιλαμβάνει το pattern “root”. Αν ναι, τότε τυπώνεται ολόκληρη η γραμμή που βρέθηκε το pattern. 6.$ awk –F: ‘$4 == 0 {print}’ /etc/passwd ίσο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd για το αν είναι ίσο με το ‘0’, δηλαδή, αν ο user ανήκει στο group που ανήκει και ο root. Ετσι, τυπώνονται όλες οι γραμμές των users που ανήκουν στο ίδιο group με το root. Η γλώσσα awk - Παραδείγματα

7 7.$ awk –F: ‘$4 < 14 {print}’ /etc/passwd μικρότερο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd που έχει field separator το χαρακτήρα ‘:’, για το αν είναι μικρότερο από την τιμή 14. Ετσι, τυπώνονται όλες οι γραμμές εκείνων των users που ανήκουν στα group 0-13. 8.$ awk –F: ‘$4 <= 14 {print}’ /etc/passwd μικρότερο ή ίσο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd για το αν είναι μικρότερο ή ίσο από το ‘14’. Ετσι, τυπώνονται όλες οι γραμμές εκείνων των users που ανήκουν στα group 0-14. Η γλώσσα awk - Παραδείγματα

8 9.$ awk –F: ‘$4 != 14 {print}’ /etc/passwd δεν είναι ίσο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd που έχει field separator το χαρακτήρα ‘:’, για το αν δεν είναι ίσο με την τιμή 14. Ετσι, τυπώνονται όλες οι γραμμές εκείνων των users που ανήκουν σε οποιοδήποτε άλλο group εκτός από το 14. 10.$ awk –F: ‘$4 >= 14 {print}’ /etc/passwd μεγαλύτερο ή ίσο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd για το αν είναι μεγαλύτερο ή ίσο από το ‘14’. Ετσι, τυπώνονται όλες οι γραμμές εκείνων των users που ανήκουν στα group 14-. Η γλώσσα awk - Παραδείγματα

9 11.$ awk –F: ‘$4 > 14 {print}’ /etc/passwd μεγαλύτερο Ελεγχος του 4ου πεδίου κάθε γραμμής του αρχείου passwd που έχει field separator το χαρακτήρα ‘:’, για το αν είναι μεγαλύτερο από την τιμή 14. Ετσι, τυπώνονται όλες οι γραμμές εκείνων των users που ανήκουν στα group 14-.

10 Η γλώσσα awk στον προγραμματισμό στο Shell $ who | awk ‘{print $2}’$ who | awk ‘{print $2}’ Εμφανίζεται λίστα με τα τερματικά μόνο που είναι ενεργά στο σύστημα και αφού το όνομα τους βρίσκεται στο δεύτερο πεδίο μιας λίστας της εντολής who.

11 Η γλώσσα awk - Παραδείγματα 1.$ cat > awkprg1 /widget/ {print} ^C $ awk –f awkprg1 2.$ cat > awkprg2 /widget/ {w_count=w_count+1} ^C $ awk –f awkprg2 3.$ nawk ‘/widget/ {print}’ inventory 4.$ cat > phones JudySeattle206-333-4321 FranMiddletown908-671-4321 JudyRumson908-741-1234 RonIthaca607-273-1234 ^C $ nawk ‘/908-/ {print $1}’ phones

12 Η γλώσσα awk - Παραδείγματα 5.$ nawk ‘{print $1}’ phones 6.$ nawk –F, ‘/Judy/ {print}’ phones 7.$ nawk –F”\t” ‘/Judy/ {print}’ phones 8.$ nawk ‘length($2) > 6’ phones 9.$ nawk ‘{print $1}’ phones > namelist 10.$ nawk ‘{print $1}’ phones1 phones2 11.$ nawk –f progfile input_file

13 12.$ nawk ‘{temp = $1;$1 = $2;$2 = temp;print}’ phones > newphones ή $ cat > awkprg3 # this is a multi-line awk program {temp = $1; $1 = $2; $2 = temp; print} ^C $ nawk –f awkprg3 phones > newphones Η γλώσσα awk - Παραδείγματα

14 Η γλώσσα awk - Patterns Κανονικές εκφράσεις(Regular expressions)Κανονικές εκφράσεις(Regular expressions) Σειρές γραμμάτων, αριθμών και ειδικών χαρακτήρων που καθορίζουν το string που αναζητάται. Pattern σύγκρισης (Comparison patterns)Pattern σύγκρισης (Comparison patterns) Patterns με τα οποία γίνεται σύγκριση δύο στοιχείων με χρήση τελεστών όπως =, καθώς και τελεστών σύγκρισης για strings. Χρησιμοποιούνται για σύγκριση αριθμών και strings. Σύνθετα patterns (Compound patterns)Σύνθετα patterns (Compound patterns) Δημιουργούνται από άλλα patterns με χρήση των λογικών τελεστών and ( && ), or ( || ) και not ( ! ). Χρησιμοποιούνται για σύγκριση αριθμών και strings και συνδυασμού αριθμών με strings.

15 Η γλώσσα awk - Patterns Pattern περιοχής-ζώνης (Range patterns)Pattern περιοχής-ζώνης (Range patterns) Χρησιμοποιούνται για αναζήτηση γραμμών μεταξύ μιας εμφάνισης ενός pattern και μιας εμφάνισης ενός δεύτερου pattern. BEGIN και END patternsBEGIN και END patterns Πρόκειται για ειδικά ενσωματωμένα patterns που στέλνουν οδηγίες σε ένα πρόγραμμα awk για την εκτέλεση ενεργειών (actions) πριν ή μετά τον κύριο βρόχο επεξεργασίας.

16 Η γλώσσα awk – String Patterns Σε ένα awk πρόγραμμα μπορούν να χρησιμοποιηθούν: –Ενα απλό string pattern (π.χ /Rumson/) –Ενα string pattern που να περιέχει ειδικούς χαρακτήρες από μια κανονική έκφραση: 1952 (αναζήτηση του 1952) \t (το escape sequence του χαρακτήρα tab) ^15 (αναζήτηση του 15 στην αρχή μιας γραμμής) 29$ (αναζήτηση ενός string με το 29 στο τέλος μιας γραμμής) [123] (αναζήτηση του 1, 2, ή 3) [1-3] (επίσης αναζήτηση του 1, 2, ή 3)

17 Η γλώσσα awk – String Patterns Θεωρείστε το αρχείο inventory με περιεχόμενα: pencils108.11.15 markers50.45.75 memos24.53.75 notebooks15.751.00 erasers200.12.15 books101.001.50 /marker*/ (αναζήτηση του marker ή markers) /^books/ (αναζήτηση του books και όχι του notebooks)

18 Η γλώσσα awk – String Patterns –Μια string έκφραση που περιέχει τελεστές string όπως είναι οι τελεστές σύγκρισης. $2 ~ /^15/ (αναζήτηση του πεδίου 2 αν αρχίζει από 15) $2 ~ /^15$/ (αναζήτηση του πεδίου 2 αν είναι το 15) $1 == $3 (έλεγχος αν το πεδίο 1 είναι το ίδιο με το πεδίο 3) $1 != “pencils” (αναζήτηση γραμμών στις οποίες το πεδίο 1 δεν είναι “pencils”) $2 > “Johnson” (αναζήτηση γραμμών στις οποίες το πεδίο 2 ακολουθεί το “Johnson” με αλφαβητική σειρά) $4 != $3 +15 (αναζήτηση γραμμών στις οποίες το πεδίο 4 δεν είναι ίσο με το άθροισμα του πεδίου 3 και του αριθμού 15) $1 + $2 >= 13 (αναζήτηση γραμμών στις οποίες το άθροισμα των πεδίων 1 και 2 είναι μεγαλύτερο από ή ίσο με τον αριθμό 13) $1 > $2 + day (αναζήτηση γραμμών στις οποίες το πεδίο 1 είναι μεγαλύτερο από το άθροισμα του πεδίου 2 και της μεταβλητής day)

19 Η γλώσσα awk – String Patterns ΠαράδειγμαΠαράδειγμα προγράμματος που λειτουργεί σε ένα αρχείο κειμένου μορφοποιημένο για την troff. Ενα συνηθισμένο λάθος στα αρχεία troff είναι η παράλειψη να κλείσει ένα display που ξεκινά με.DS (Display Start) με το αντίστοιχό του.DE (Display End). Το πρόγραμμα που ακολουθεί ελέγχει αν για κάθε.DS υπάρχει το αντίστοιχο.DE /\.DS/ && display==1 {print “Missing DE before line ” NR} /\.DS/ && display==0 {display=1} /\.DE/ && display==0 {print “Extra DE at line ” NR} /\.DE/ && display==1 {display=0;discountt++} END {print “Found ” discountt “ matched displays”} /200/,/299/ (αναζήτηση γραμμών στις οποίες βρίσκεται ένας αριθμός από το 200 μέχρι και το 299)

20 Η γλώσσα awk – Numeric Patterns και BEGIN / END Ολα τα string patterns που περιγράφηκαν λειτουργούν και για numeric patterns εκτός από αυτά των κανονικών εκφράσεων και από τον τελεστή tilde (~). $1 < 10 && $2 <= 30 (αναζήτηση γραμμών όπου το πεδίο 1 είναι μικρότερο του 10 και το πεδίο 2 μικρότερο από ή ίσο με το 30) Το ειδικό pattern BEGIN υποδηλώνει ότι η ενέργεια που έπεται θα εκτελεστεί πριν από την επεξεργασία οποιασδήποτε άλλης εισόδου (δηλ. πριν το διάβασμα της πρώτης γραμμής). Το ειδικό pattern END υποδηλώνει ότι η ενέργεια που έπεται θα εκτελεστεί μετά και από την τελευταία επεξεργασία εισόδου (δηλ. μετά το διάβασμα της τελευταίας γραμμής). BEGIN {FS=“,”;print “NameOn hand CostPrice”} (θέτει το field separator σε, με χρήση της μεταβλητής FS και εμφανίζει μια επικεφαλίδα στην αρχή μιας λίστας) $nawk ‘END {print NR}’ inventory (διαβάζει τις γραμμές του αρχείου inventory και εμφανίζει τον αριθμό των γραμμών χρησιμοποιώντας τη μεταβλητή NR)

21 Η γλώσσα awk – Ενέργειες (Actions) Εμφάνιση γραμμών (print). Εκχώρηση τιμής σε μεταβλητή. Κλήση δομών ελέγχου. Κλήση συναρτήσεων οριζόμενων από το χρήστη. Χρήση ειδικών εντολών για τον έλεγχο εισόδου/εξόδου (input/output).

22 Η γλώσσα awk – Μεταβλητές (Variables) Οι μεταβλητές σε ένα πρόγραμμα awk μπορούν να περιέχουν strings ή αριθμούς. Το όνομα μιας μεταβλητής αρχίζει με ένα γράμμα και μπορεί να αποτελείται από γράμματα, αριθμούς και το _ (underscore). Δε γίνεται δήλωση μεταβλητών. Καθορίζεται ο τύπος τους από τον τρόπο που χρησιμοποιούνται και αλλάζει εφόσον αλλάζει και ο τρόπος. Αρχική τιμή σε μια μεταβλητή είναι το null για τα strings και το 0 για τις αριθμητικές μεταβλητές. Ολές οι μεταβλητές είναι καθολικές (global) σε ένα awk πρόγραμμα αλλά όχι και για τις συναρτήσεις που ορίζονται από το χρήστη. Η γλώσσα awk επιτρέπει τη δημιουργία μεταβλητών, την εκχώρηση τιμών σε αυτές και την εκτέλεση διαφόρων λειτουργιών πάνω σε μια μεταβλητή.

23 Η γλώσσα awk – Ενσωματωμένες Μεταβλητές (Built –In Variables) Μεταβλητή (Variable) Περιγραφή FSInput field separator OFSOutput field separator NFNumber of fields in the current record NRNumber ofn records read so far FILENAMEName of the input file FNRRecord number in current file RSInput record separator ORSOutput record separator OFMTOutput format for numbers RLENGTHSet by the match function to match length RSTARTSet by the match function to match length SUBSEPSubscript separator, used in arrays ARGCNumber of command line arguments ARGVArray of command line arguments

24 Η γλώσσα awk – Ενέργειες με Πεδία και Αριθμούς Πεδίων Τα πεδία (field identifiers) και οι αριθμοί των πεδίων (field numbers) αποτελούν ένα ειδικό είδος ενσωματωμένων μεταβλητών. Μπορεί να τους εκχωρηθεί τιμή, να τροποποιηθεί η τιμή τους και να συγκριθούν με άλλες μεταβλητές αριθμητικές ή strings. Με αυτό τον τρόπο μπορούν να δημιουργηθούν νέα πεδία, να διαγραφεί κάποιο πεδίο, ή να αλλάξει η σειρά δύο ή περισσότερων πεδίων ενός αρχείου. Παράδειγμα: pencils108.11.15 {$5 = $2 * $4 print $0} (υπολογισμός της συνολικής αξίας κάθε στοιχείου του αρχείου, πολλαπλασιάζοντας σε κάθε γραμμή το πεδίο 2 με το πεδίο 4 και δημιουργώντας ένα 5ο πεδίο με τη συνολική τιμή στο τέλος κάθε γραμμής και εμφάνιση τέλος ολόκληρης της γραμμής) /pencil*/ {$6=“Empire”} (δημιουργία ενός νέου πεδίου, του πεδίου 6, σαν πεδίο string, με περιεχόμενο τη λέξη “Empire”. {print $NF} (εμφάνιση του τελευταίου πεδίου και όχι του αριθμού των πεδίων σε ένα αρχείο όπου το πλήθος των πεδίων κυμαίνεται από γραμμή σε γραμμή (not fixed).

25 Η γλώσσα awk – Συναρτήσεις και Λειτουργίες με Strings Εκχώρηση τιμής σε μεταβλητή string label = “inventory” (εκχώρηση της τιμής inventory στη μεταβλητή label. Η χρήση των εισαγωγικών είναι υποχρεωτική, διαφορετικά εκχωρείται το περιεχόμενο της μεταβλητής inventory στη μεταβλητή label) Συνένωση δύο string μεταβλητών σε μία code = $6 “001” (π.χ για τη γραμμή pencils108.11.15Empire γίνεται pencils108.11.15Empire001 ) Συναρτήσεις για μεταβλητές string Χρήση λογικών τελεστών για τη δημιουργία σύνθετων patterns

26 Η γλώσσα awk – Συναρτήσεις και Λειτουργίες με Αριθμούς Χρήση των αριθμητικών τελεστών +,-,*,/,% και ^ Χρήση των τελεστών εκχώρησης =,+=,-=,*=,/=,%= και ^= Χρήση των τελεστών αύξησης και μείωσης ++ και -- Χρήση των ενσωματωμένων αριθμητικών συναρτήσεων: –cos (συνημιτόνου), –atan2 (εφαπτομένης), –log (λογάριθμου), –exp (exponential), –int (ακέραιο μέρος αριθμού), –rand (τυχαίος αριθμός μεταξύ 0 και 1).

27 Η γλώσσα awk – Πίνακες Η χρήση ενός πίνακα σε ένα awk πρόγραμμα δεν απαιτεί την προηγούμενη δήλωση ή τον ορισμό του πίνακα. Ορίζοντας το περιεχόμενο ενός στοιχείου του πίνακα, ορίζεται αυτόματα ο πίνακας. Στην awk υπάρχουν οι λεγόμενοι associative arrays, πίνακες που χρησιμοποιούν strings αντί για αριθμούς στην περιγραφή μιας θέσης του πίνακα, π.χ. votes[republicants] και votes[democrats]. Ορισμός πίνακα: –Με την εκχώρηση μιας τιμής σε αυτόν stock[1] = $2 –Με την εκχώρηση μιας τιμής σε αυτόν, π.χ. στη θέση που ονομάζεται από την τιμή του πεδίου 1 number[$1] = $2 Αν η τιμή του πεδίου 1 είναι pencils τότε δημιουργείται ένα στοιχείο στον πίνακα ως εξής: number[pencils] = 108

28 Η γλώσσα awk – Πίνακες Χρήση πίνακα: –Σαν οποιαδήποτε άλλη μεταβλητή –Με χρήση της επαναληπτικής διαδικασίας for-in επιτυγχάνεται πρόσβαση σε όλα τα στοιχεία ενός πίνακα, π.χ. /\.DS/ {count[“display”]++} /\.BL/ {count[“bullet”]++} /\.TS/ {count[“table”]++} END {for (s in count) print s, count[s]} –Χρήση της συνάρτησης διαγραφής ενός στοιχείου από ένα πίνακα: Delete array[subscript] –Ελεγχος ύπαρξης ενός στοιχείου σε ένα πίνακα: subscript in array επιστρέφει την τιμή 1 αν το στοιχείο array[subscript] υπάρχει και 0 αν δεν υπάρχει.

29 Η γλώσσα awk – Συναρτήσεις Οριζόμενες από το Χρήστη Συναρτήσεις που ορίζονται μέσα σε ένα πρόγραμμα awk και καλούνται από αυτό. Μπορούν να οριστούν παράμετροι σε μια συνάρτηση (τιμές ή μεταβλητές) και μπορεί να επιστρέφει μία τιμή. Με τον ορισμό μιας συνάρτησης, μπορεί να γίνει χρήση αυτής είτε σε pattern είτε σε action, οπουδήποτε γενικά θα μπορούσε να χρησιμοποιηθεί μια ενσωματωμένη συνάρτηση (π.χ. length() ). Ορισμός συνάρτησης: –Για τον ορισμό μιας συνάρτησης προσδιορίζονται το όνομά της, οι παράμετροί της και οι ενέργειες που θα εκτελέσει, με την ακόλουθη μορφή: function function_name ( list of parameters ) { action_list } Παράδειγμα: function in_range(testval,lower,upper) { if (testval > lower && testval < upper) return 1 else return 0 }

30 Η γλώσσα awk – Συναρτήσεις Οριζόμενες από το Χρήστη –Δεν επιτρέπεται το κενό ανάμεσα στο όνομα της συνάρτησης και στην αριστερή παρένθεση της λίστας των παραμέτρων. –Το return είναι προαιρετικό αλλά αν δε χρησιμοποιηθεί δεν επιστρέφεται τιμή. Κλήση συνάρτησης: –Μετά τον ορισμό μιας συνάρτησης η κλήση γίνεται όπως ακριβώς με μια ενσωματωμένη συνάρτηση, π.χ.: if (in_range($5,10,15)) print “Found a match!” –Οι συναρτήσεις μπορούν να είναι αναδρομικές, π.χ.: function factorial(n) { if (n<=1) return 1 else return n * factorial(n-1) } Η κλήση της συνάρτησης μπορεί να είναι π.χ. print factorial(3)

31 Η γλώσσα awk – Δομές Ελέγχου ifΗ δομή if: –if (condition) action Παράδειγμα: /pencil*/ {pencils += $2} END {if(pencils < 144) print “Must order more pencils”} if – thenΗ δομή if – then σε μια γραμμή: –expression1 ? expression2 : expression3 Παράδειγμα: $1 > 50000 ? ++high : ++low whileΗ δομή while: –while(condition) { action } Παράδειγμα: Smith546235100230 {sum=0Major340120 I=2Minor459104780 while (I<=NF) { sum += $I i++} average=sum/(NF-1) print “The average for “ $1 “ is “ average }

32 Η γλώσσα awk – Δομές Ελέγχου do-whileΗ δομή do-while: –do action while(condition) forΗ δομή for: –for (initial statement; test; increment) statement Παράδειγμα: {sum=0 for (i=2; i<=NF; i++) sum+=$I average=sum/(NF-1) print “The average for “ $1” is “ average} breakΗ εντολή break: –Προκαλεί την έξοδο από τον πιο άμεσο (εσωτερικότερο) βρόχο. exitΗ εντολή exit: –Προκαλεί τη διακοπή της ανάγνωσης της εισόδου. Όταν σε ένα πρόγραμμα awk βρεθεί ένα exit, τότε ο έλεγχος του προγράμματος μεταφέρεται στην END εφόσον υπάρχει αλλιώς σταματάει το πρόγραμμα awk.

33 Η γλώσσα awk – Είσοδος - Έξοδος Είσοδος από αρχείο –Διάβασμα μιας γραμμής από το stdin και εκχώρηση αυτής σε μια μεταβλητή. getline X –Για το διάβασμα μιας γραμμής από αρχείο γίνεται ανακατεύθυνση στη getline. getline < “my_file” –Διάβασμα μιας γραμμής από ένα αρχείο και εκχώρηση αυτής σε μια μεταβλητή. getline var < “my_file” Είσοδος από το πληκτρολόγιο –Διάβασμα στοιχείων από το πληκτρολόγιο για την άμεση ενημέρωση ενός αρχείου. {print $1, “Old price:”, $4 getline new < “/dev/tty” $4=new print “New price:”, $0 > “outputfile”} Είσοδος από την έξοδο άλλης εντολής (|) –Διάβασμα του αρχείο ως έξοδο μιας άλλης εντολής. sort input_file | nawk –f progfile Έξοδος στην οθόνη print –Η εντολή print: print expr1, expr2, … BEGIN { OFS=“\t” } {print $1, $4} printf –Η εντολή printf


Κατέβασμα ppt "AWK Μία εξαιρετικά δυναμική συμβολική γλώσσα προγραμματισμού και ταυτόχρονα ένα εργαλείο διαχείρισης δεδομένων. Αναζητά, τροποποιεί αρχεία, δημιουργεί."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google