AWK

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια
AWK
Γενικά
Ηいーたμみゅーεいぷしろんρろー. Δημιουργίας1977
Είδοςγλώσσα προγραμματισμού σεναρίων, Δομημένος προγραμματισμός
Διανομή
Λειτουργικά
Ανάπτυξη
Σύνδεσμοι
Αποθετήριο κώδικα
https://github.com/onetrueawk/awk

Τたうοおみくろん AWK είναι εργαλείο ανάλυσης δεδομένων κかっぱαあるふぁιいおた παραγωγής αναφορών κかっぱαあるふぁιいおた χρησιμοποιεί μみゅーιいおたαあるふぁ γλώσσα σεναρίων πぱいοおみくろんυうぷしろん λειτουργεί μみゅーεいぷしろん βάση τたうαあるふぁ δεδομένα εισόδου (data-driven), ηいーた οποία αποτελείται από ενέργειες πぱいοおみくろんυうぷしろん πρέπει νにゅーαあるふぁ εκτελεστούν σしぐまεいぷしろん δεδομένα τύπου κειμένου (σしぐまεいぷしろん αρχεία ή ροές δεδομένων), μみゅーεいぷしろん σκοπό τたうηいーたνにゅー παραγωγή αναφορών μみゅーεいぷしろん κάποια μορφοποίηση. Ηいーた γλώσσα πぱいοおみくろんυうぷしろん χρησιμοποιείται από τたうοおみくろん εργαλείο awk χρησιμοποιεί κυρίως τύπους δεδομένων συμβολοσειρών (strings), συσχετιστικών πινάκων (associative arrays, πίνακες τたうωおめがνにゅー οποίων οおみくろんιいおた δείκτες είναι τύπου συμβολοσειράς) κかっぱαあるふぁιいおた κανονικές εκφράσεις (regular expressions).

Ηいーた γλώσσα AWK αποτέλεσε ένα από τたうαあるふぁ πρώτα εργαλεία πぱいοおみくろんυうぷしろん εμφανίστηκαν σしぐまτたうηいーたνにゅー Έκδοση 7 τたうοおみくろんυうぷしろん Unix (Version 7 Unix) κかっぱαあるふぁιいおた έγινε δημοφιλής σしぐまαあるふぁνにゅー τρόπος νにゅーαあるふぁ εισαχθούν υπολογιστικές λειτουργίες σしぐまεいぷしろん μみゅーιいおたαあるふぁ σωλήνωση τたうοおみくろんυうぷしろん (pipeline) τたうοおみくろんυうぷしろん Unix. Σχεδόν κάθε σύγχρονο λειτουργικό σύστημα τύπου Unix πぱいοおみくろんυうぷしろん είναι διαθέσιμο σήμερα περιλαμβάνει τたうηいーた γλώσσα AWK. Ηいーた AWK αναφέρεται σしぐまτたうοおみくろん Single UNIX Specification σしぐまαあるふぁνにゅー υποχρεωτικό εργαλείο ενός λειτουργικού συστήματος Unix κかっぱαあるふぁιいおた αποτελεί μαζί μみゅーεいぷしろん τたうοおみくろん κέλυφος Bourne τις δύο μοναδικές γλώσσες σεναρίων πぱいοおみくろんυうぷしろん είναι κανονικά διαθέσιμες σしぐまεいぷしろん ένα περιβάλλον Unix.[1] Ανήκει επίσης στις εντολές πぱいοおみくろんυうぷしろん απαιτούνται από τたうηいーたνにゅー προδιαγραφή Linux Standard Base.[2] Υπάρχουν επίσης διαθέσιμες υλοποιήσεις της AWK γがんまιいおたαあるふぁ πολλά άλλα λειτουργικά συστήματα.

Ηいーた AWK δημιουργήθηκε σしぐまτたうαあるふぁ Bell Labs σしぐまτたうαあるふぁ τέλη της δεκαετίας τたうοおみくろんυうぷしろん 1970,[3] κかっぱαあるふぁιいおた τたうοおみくろん όνομά της προέρχεται από τたうαあるふぁ επίθετα τたうωおめがνにゅー δημιουργών της — Alfred Aho, Peter Weinberger κかっぱαあるふぁιいおた Brian Kernighan. Τたうοおみくろん awk μみゅーεいぷしろん μικρά γράμματα αναφέρεται σしぐまτたうοおみくろん αντίστοιχο πρόγραμμα τたうοおみくろんυうぷしろん Unix ή τたうοおみくろんυうぷしろん Plan 9 πぱいοおみくろんυうぷしろん εκτελεί προγράμματα γραμμένα σしぐまτたうηいーた γλώσσα AWK.

Ηいーた ισχύς, ηいーた συντομία, αλλά κかっぱαあるふぁιいおた οおみくろんιいおた περιορισμοί τたうωおめがνにゅー πρώτων προγραμμάτων σしぐまεいぷしろん AWK ενέπνευσαν τたうοおみくろん Larry Wall νにゅーαあるふぁ γράψει τたうηいーたνにゅー Perl, ενώ ταυτόχρονα αναπτυσσόταν μみゅーιいおたαあるふぁ νέα, ισχυρότερη POSIX AWK κかっぱαあるふぁιいおた ηいーた gawk (GNU AWK). Αあるふぁνにゅー κかっぱαあるふぁιいおた ηいーた AWK κかっぱαあるふぁιいおた οおみくろん sed είχαν σχεδιαστεί νにゅーαあるふぁ υποστηρίζουν προγράμματα της μιας γραμμής, ακόμα κかっぱαあるふぁιいおた οおみくろんιいおた πρώτοι χρήστες της AWK από τたうαあるふぁ Bell Labs συχνά έγραφαν καλά δομημένα προγράμματα μεγάλου μεγέθους σしぐまεいぷしろん AWK. Παρά τたうοおみくろんνにゅー περιορισμένο σκοπό γがんまιいおたαあるふぁ τたうοおみくろんνにゅー οποίο προορίζεται, ηいーた AWK είναι Τιούρινγκ-πλήρης (Turing-complete).[4]

Δομή τたうωおめがνにゅー προγραμμάτων σしぐまεいぷしろん AWK[Επεξεργασία | επεξεργασία κώδικα]

Κατά τたうοおみくろんνにゅー Alfred V. Aho:[5]

Ηいーた AWK είναι μみゅーιいおたαあるふぁ γλώσσα γがんまιいおたαあるふぁ επεξεργασία αρχείων κειμένου. Κάθε αρχείο χρησιμοποιείται σしぐまαあるふぁνにゅー μみゅーιいおたαあるふぁ ακολουθία από εγγραφές, κかっぱαあるふぁιいおた εξορισμού κάθε γραμμή είναι μみゅーιいおたαあるふぁ εγγραφή. Κάθε γραμμή σπάει σしぐまεいぷしろん πεδία, επομένως μπορούμε νにゅーαあるふぁ θεωρήσουμε ότι ηいーた πρώτη λέξη μιας γραμμής είναι τたうοおみくろん πρώτο πεδίο, ηいーた δεύτερη λέξη είναι τたうοおみくろん δεύτερο πεδίο, κかっぱλらむだπぱい. Ένα πρόγραμμα σしぐまεいぷしろん AWK αποτελείται από μιας ακολουθία από εντολές της μορφής πρότυπο-ενέργεια. Ηいーた AWK διαβάζει τたうηいーたνにゅー είσοδο γραμμή προς γραμμή. Μみゅーιいおたαあるふぁ γραμμή σαρώνεται γがんまιいおたαあるふぁ κάθε πρότυπο τたうοおみくろんυうぷしろん προγράμματος, κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ κάθε πρότυπο πぱいοおみくろんυうぷしろん ταιριάζει, εκτελείται ηいーた αντίστοιχη ενέργεια.

Ένα πρόγραμμα σしぐまεいぷしろん AWK είναι μみゅーιいおたαあるふぁ σειρά από ζεύγη πρότυπο-ενέργεια, πぱいοおみくろんυうぷしろん γράφονται ως εξής:

συνθήκη { ενέργεια }

όπου ηいーた συνθήκη είναι συνήθως μみゅーιいおたαあるふぁ έκφραση κかっぱαあるふぁιいおた ηいーた ενέργεια μみゅーιいおたαあるふぁ σειρά από εντολές. Ηいーた είσοδος σπάει σしぐまεいぷしろん εγγραφές (records), οおみくろんιいおた οποίες εξορισμού θεωρείται ότι χωρίζονται από χαρακτήρα αλλαγής γραμμής, επομένως ηいーた είσοδος σπάει σしぐまεいぷしろん γραμμής. Τたうοおみくろん πρόγραμμα δοκιμάζει κάθε γραμμή έναντι σしぐまεいぷしろん κάθε μみゅーιいおたαあるふぁ από τις συνθήκες μみゅーεいぷしろん τたうηいーた σειρά, κかっぱαあるふぁιいおた εκτελεί τたうηいーたνにゅー ενέργεια γがんまιいおたαあるふぁ κάθε έκφραση πぱいοおみくろんυうぷしろん είναι αληθής. Νにゅーαあるふぁ σημειωθεί ότι ηいーた συνθήκη ή ηいーた ενέργεια μπορεί νにゅーαあるふぁ παραλειφθεί. Σしぐまεいぷしろん αυτές τις περιπτώσεις, ηいーた προεπιλεγμένη συνθήκη ταιριάζει σしぐまεいぷしろん κάθε εγγραφή κかっぱαあるふぁιいおた ηいーた προεπιλεγμένη ενέργεια τυπώνει τたうηいーたνにゅー εγγραφή.

Εκτός από απλές εκφράσεις της AWK, όπως ηいーた foo == 1 ή ηいーた /^foo/, ηいーた συνθήκη μπορεί νにゅーαあるふぁ είναι BEGIN ή END, πぱいοおみくろんυうぷしろん έχουν σしぐまαあるふぁνにゅー αποτέλεσμα ηいーた ενέργεια νにゅーαあるふぁ εκτελείται πぱいρろーιいおたνにゅー ή μετά από τたうοおみくろん διάβασμα όλων τたうωおめがνにゅー εγγραφών, ή πρότυπο1, πρότυπο2 πぱいοおみくろんυうぷしろん ταιριάζει μみゅーεいぷしろん τたうοおみくろん εύρος τたうωおめがνにゅー εγγραφών πぱいοおみくろんυうぷしろん αρχίζουν μみゅーεいぷしろん μみゅーιいおたαあるふぁ εγγραφή πぱいοおみくろんυうぷしろん ταιριάζει μみゅーεいぷしろん τたうοおみくろん πρότυπο1 μέχρι κかっぱαあるふぁιいおた τたうηいーたνにゅー εγγραφή πぱいοおみくろんυうぷしろん ταιριάζει μみゅーεいぷしろん τたうοおみくろん πρότυπο2, πぱいρろーιいおたνにゅー συνεχίσει πάλι τたうηいーたνにゅー αναζήτηση γがんまιいおたαあるふぁ τたうηいーたνにゅー επόμενη γραμμή πぱいοおみくろんυうぷしろん ταιριάζει μみゅーεいぷしろん τたうοおみくろん πρότυπο1.

Οおみくろんιいおた εκφράσεις της AWK μπορούν νにゅーαあるふぁ έχουν αριθμητικούς κかっぱαあるふぁιいおた λογικούς τελεστές, καθώς κかっぱαあるふぁιいおた τたうοおみくろんνにゅー τελεστή ~, πぱいοおみくろんυうぷしろん δοκιμάζει νにゅーαあるふぁ ταιριάξει μみゅーιいおたαあるふぁ κανονική έκφραση σしぐまεいぷしろん μみゅーιいおたαあるふぁ συμβολοσειρά. Υπάρχει επίσης ηいーた βολική σύνταξη /regexp/, ηいーた οποία δοκιμάζει νにゅーαあるふぁ ταιριάξει μみゅーεいぷしろん τたうηいーたνにゅー τρέχουσα εγγραφή χωρίς τたうηいーた χρήση τたうοおみくろんυうぷしろん τελεστή ~.

Εντολές της AWK[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた εντολές της AWK εισάγονται σしぐまτたうηいーた θέση της ενέργειας πぱいοおみくろんυうぷしろん αναφέρθηκε παραπάνω. Οおみくろんιいおた εντολές της AWK μπορούν νにゅーαあるふぁ είναι κλήσεις συναρτήσεων, αναθέσεις μεταβλητών, υπολογισμοί, ή οποιοσδήποτε συνδυασμός αυτών. Ηいーた AWK περιλαμβάνει υποστήριξη γがんまιいおたαあるふぁ πολλές συναρτήσεις, ενώ διάφορες εκδόσεις της προσθέτουν επιπλέον συναρτήσεις, καθώς επίσης κかっぱαあるふぁιいおた δυναμικά συνδεδεμένες βιβλιοθήκες (dynamically linked libraries), οおみくろんιいおた οποίες προσφέρουν ακόμα περισσότερες συναρτήσεις.

Γがんまιいおたαあるふぁ συντομία σしぐまτたうαあるふぁ παρακάτω παραδείγματα θしーたαあるふぁ παραλείπονται οおみくろんιいおた αγκύλες ( { } ) πぱいοおみくろんυうぷしろん περιέχουν τις εντολές.

Ηいーた εντολή εκτύπωσης (print)[Επεξεργασία | επεξεργασία κώδικα]

Ηいーた εντολή print χρησιμοποιείται γがんまιいおたαあるふぁ τたうηいーたνにゅー εμφάνιση κειμένου. Τたうοおみくろん κείμενο εξόδου τερματίζεται πάντα μみゅーεいぷしろん μみゅーιいおたαあるふぁ προκαθορισμένη συμβολοσειρά πぱいοおみくろんυうぷしろん ονομάζεται διαχωριστής εγγραφών εξόδου (output record separator ή ORS) κかっぱαあるふぁιいおた εξορισμού είναι οおみくろん χαρακτήρας αλλαγής γραμμής. Ηいーた απλούστερη μορφή της εντολής είναι:

print
Εμφανίζει τたうαあるふぁ περιεχόμενα της τρέχουσας εγγραφής. Οおみくろんιいおた εγγραφές σしぐまτたうηいーたνにゅー AWK χωρίζονται σしぐまεいぷしろん πεδία (fields), τたうαあるふぁ οποία μπορούν νにゅーαあるふぁ εμφανιστούν ξεχωριστά:
print $1
Εμφανίζει τたうοおみくろん πρώτο πεδίο της τρέχουσας εγγραφής.
print $1, $3
Εμφανίζει τたうοおみくろん πρώτο κかっぱαあるふぁιいおた τたうοおみくろん τρίτο πεδίο της τρέχουσας εγγραφής κかっぱαあるふぁιいおた ανάμεσά τους εμφανίζει τたうηいーたνにゅー προκαθορισμένη συμβολοσειρά πぱいοおみくろんυうぷしろん ονομάζεται διαχωριστής πεδίων εξόδου (output field separator ή OFS), ηいーた οποία εξορισμού είναι οおみくろん χαρακτήρας τたうοおみくろんυうぷしろん κενού.

Αあるふぁνにゅー κかっぱαあるふぁιいおた τたうαあるふぁ πεδία ($X) μοιάζουν μみゅーεいぷしろん μεταβλητές (τたうοおみくろん σύμβολο $ σημαίνει μεταβλητή σしぐまτたうηいーたνにゅー perl), σしぐまτたうηいーたνにゅー πραγματικότητα αναφέρονται σしぐまεいぷしろん πεδία της τρέχουσας εγγραφής. Σしぐまαあるふぁνにゅー ειδική περίπτωση, τたうοおみくろん $0 αναφέρεται σしぐまεいぷしろん ολόκληρη τたうηいーたνにゅー εγγραφή. Επομένως οおみくろんιいおた εντολές "print" κかっぱαあるふぁιいおた "print $0" είναι ισοδύναμες.

Ηいーた εντολή print μπορεί επίσης νにゅーαあるふぁ εμφανίσει τたうαあるふぁ αποτελέσματα υπολογισμών ή κλήσεων συναρτήσεων:

print 3+2
print foobar(3)
print foobar(variable)
print sin(3-2)

Ηいーた έξοδος μπορεί νにゅーαあるふぁ σταλεί σしぐまεいぷしろん κάποιο αρχείο:

print "έκφραση" > "όνομα αρχείου"

ή σしぐまεいぷしろん άλλο πρόγραμμα διαμέσου μιας σωλήνωσης:

print "έκφραση" | "εντολή"

Ενσωματωμένες μεταβλητές[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた ενσωματωμένες μεταβλητές της Awk περιλαμβάνουν τις μεταβλητές τたうωおめがνにゅー πεδίων: $1, $2, $3, ... (μみゅーεいぷしろん $0 νにゅーαあるふぁ είναι ολόκληρη ηいーた εγγραφή). Οおみくろんιいおた μεταβλητές αυτές δίνουν τたうοおみくろん κείμενο ή τたうηいーたνにゅー τιμή κάθε πεδίου κειμένου μιας εγγραφής.

Υπάρχουν κかっぱαあるふぁιいおた άλλες ενσωματωμένες μεταβλητές:

  • NR: Μετρητής τたうοおみくろんυうぷしろん αριθμού τたうωおめがνにゅー εγγραφών εισόδου.
  • NF: Οおみくろん αριθμός τたうωおめがνにゅー πεδίων σしぐまεいぷしろん μみゅーιいおたαあるふぁ εγγραφή εισόδου. Τたうοおみくろん τελευταίο πεδίο μπορεί νにゅーαあるふぁ γραφεί κかっぱαあるふぁιいおた σしぐまαあるふぁνにゅー $NF.
  • FILENAME: Τたうοおみくろん όνομα τたうοおみくろんυうぷしろん τρέχοντος αρχείου εισόδου.
  • FS: Οおみくろん διαχωριστικός χαρακτήρας πεδίων ("field separator") πぱいοおみくろんυうぷしろん διαχωρίζει τたうαあるふぁ πεδία σしぐまτたうηいーたνにゅー εγγραφή εισόδου. Ηいーた προκαθορισμένη τたうοおみくろんυうぷしろん τιμή είναι "λευκό διάστημα" ("white space"), δηλαδή οおみくろん χαρακτήρας τたうοおみくろんυうぷしろん κενού κかっぱαあるふぁιいおた οおみくろんιいおた χαρακτήρες-στηλοθέτες (tab characters). Ηいーた τιμή τたうοおみくろんυうぷしろん FS μπορεί νにゅーαあるふぁ τεθεί σしぐまεいぷしろん κάποιον άλλο χαρακτήρα γがんまιいおたαあるふぁ νにゅーαあるふぁ αλλάξει οおみくろん διαχωριστής πεδίων.
  • RS: Περιέχει τたうοおみくろんνにゅー τρεχοντα διαχωριστικό χαρακτήρα εγγραφών ("record separator"). Οおみくろん προκαθορισμένος διαχωριστικός χαρακτήρας εγγραφών είναι ηいーた "αλλαγή γραμμής" ("newline"), επειδή συνήθως οおみくろんιいおた εγγραφές αντιστοιχούν στις γραμμές της εισόδου.
  • OFS: Περιέχει τたうοおみくろん διαχωριστή πεδίου εξόδου ("output field separator"), πぱいοおみくろんυうぷしろん διαχωρίζει τたうαあるふぁ πεδία όταν τたうαあるふぁ εμφανίζει ηいーた Awk. Ηいーた προκαθορισμένη τたうοおみくろんυうぷしろん τιμή είναι οおみくろん χαρακτήρας κενού.
  • ORS: Περιέχει τたうοおみくろん διαχωριστή εγγραφής εξόδου ("output record separator"), πぱいοおみくろんυうぷしろん διαχωρίζει τις εγγραφές εξόδου όταν τις τυπώνει ηいーた Awk. Ηいーた προκαθορισμένη τたうοおみくろんυうぷしろん τιμή είναι οおみくろん χαρακτήρας αλλαγής γραμμής.
  • OFMT: Αποθηκεύει τたうηいーた μορφή της αριθμητικής εξόδου. Ηいーた προκαθορισμένη τたうοおみくろんυうぷしろん τιμή είναι "%.6g".

Μεταβλητές κかっぱαあるふぁιいおた σύνταξη[Επεξεργασία | επεξεργασία κώδικα]

Τたうοおみくろん ονόματα τたうωおめがνにゅー μεταβλητών μπορούν νにゅーαあるふぁ χρησιμοποιούν οποιονδήποτε από τους χαρακτήρες [A-Za-z0-9_] αλλά δでるたεいぷしろん μπορούν νにゅーαあるふぁ είναι λέξεις-κλειδιά της γλώσσας. Οおみくろんιいおた τελεστές + - * / αναπαριστούν τたうηいーたνにゅー πρόσθεση, τたうηいーたνにゅー αφαίρεση, τたうοおみくろんνにゅー πολλαπλασιασμό κかっぱαあるふぁιいおた τたうηいーた διαίρεση αντίστοιχα. Όταν δύο μεταβλητές (ή σταθερές συμβολοσειρές) τοποθετούνται ηいーた μみゅーιいおたαあるふぁ δίπλα σしぐまτたうηいーたνにゅー άλλη, αυτό δηλώνει τたうηいーた συνένωσή τους. Οおみくろんιいおた σταθερές συμβολοσειρές οριοθετούνται από διπλά εισαγωγικά. Οおみくろんιいおた εντολές δでるたεいぷしろんνにゅー χρειάζεται νにゅーαあるふぁ τερματίζονται μみゅーεいぷしろん ελληνικά ερωτηματικά (semicolons). Τέλος, σχόλια μπορούν νにゅーαあるふぁ προστεθούν σしぐまεいぷしろん ένα πρόγραμμα σしぐまαあるふぁνにゅー γραμμές πぱいοおみくろんυうぷしろん αρχίζουν μみゅーεいぷしろん τたうοおみくろん χαρακτήρα #.

Συναρτήσεις πぱいοおみくろんυうぷしろん ορίζονται από τたうοおみくろん χρήστη[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた συναρτήσεις ορίζονται παρόμοια μみゅーεいぷしろん τたうηいーた C, μみゅーεいぷしろん τたうηいーた λέξη-κλειδί function, ακολουθούμενη από τたうοおみくろん όνομα της συνάρτησης, τたうαあるふぁ ονόματα τたうωおめがνにゅー παραμέτρων της κかっぱαあるふぁιいおた τたうοおみくろん σώμα της συνάρτησης. Γがんまιいおたαあるふぁ παράδειγμα:

function add_three (number) {
  return number + 3
}

Ηいーた συνάρτηση αυτή μπορεί νにゅーαあるふぁ κληθεί ως εξής:

print add_three(36)     # Εμφανίζει 39

Οおみくろんιいおた συναρτήσεις μπορούν νにゅーαあるふぁ έχουν μεταβλητές μみゅーεいぷしろん τοπική εμβέλεια (scope): τたうαあるふぁ ονόματά τους τοποθετούνται σしぐまτたうοおみくろん τέλος της λίστας τたうωおめがνにゅー παραμέτρων, αあるふぁνにゅー κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー τους δίνεται τιμή όταν καλείται ηいーた συνάρτηση. Συνηθίζεται νにゅーαあるふぁ γράφεται κάποιο κενό σしぐまτたうηいーた λίστα τたうωおめがνにゅー παραμέτρων πぱいρろーιいおたνにゅー τις τοπικές μεταβλητές, γがんまιいおたαあるふぁ νにゅーαあるふぁ ξεχωρίζουν από τις κανονικές μεταβλητές.

Μπορεί νにゅーαあるふぁ υπάρχει κενό σしぐまτたうοおみくろんνにゅー ορισμό της συνάρτησης, μεταξύ τたうοおみくろんυうぷしろん ονόματος της συνάρτησης κかっぱαあるふぁιいおた της αριστερής παρένθεσης, αλλά δでるたεいぷしろんνにゅー επιτρέπεται τέτοιο κενό κατά τたうηいーたνにゅー κλήση της συνάρτησης.

Παραδείγματα προγραμμάτων[Επεξεργασία | επεξεργασία κώδικα]

Γειά σしぐまοおみくろんυうぷしろん, κόσμε[Επεξεργασία | επεξεργασία κώδικα]

Τたうοおみくろん κλασικό παράδειγμα "Γειά σしぐまοおみくろんυうぷしろん, κόσμε" ("Hello world") γράφεται σしぐまεいぷしろん AWK ως εξής:

BEGIN {
    print "Γειά σしぐまοおみくろんυうぷしろん, κόσμε!"
    exit(0)
}

Τたうοおみくろん μόνο πρότυπο είναι τたうοおみくろん BEGIN κかっぱαあるふぁιいおた περιέχει ως ενέργεια τたうηいーたνにゅー εντολή εκτύπωσης της συμβολοσειράς "Γειά σしぐまοおみくろんυうぷしろん, κόσμε", επομένως ηいーた εντολή αυτή θしーたαあるふぁ εκτελεστεί κατά τたうηいーたνにゅー εκκίνηση τたうοおみくろんυうぷしろん προγράμματος κかっぱαあるふぁιいおた πぱいρろーιいおたνにゅー διαβαστεί οποιοδήποτε input. Ηいーた εντολή exit χρειάζεται εδώ, ώστε τたうοおみくろん πρόγραμμα νにゅーαあるふぁ μみゅーηいーたνにゅー προχωρήσει σしぐまεいぷしろん περαιτέρω επεξεργασία τたうοおみくろんυうぷしろん input.

Εμφάνισε γραμμές μεγαλύτερες από 80 χαρακτήρες[Επεξεργασία | επεξεργασία κώδικα]

Τυπώνει όλες τις γραμμές πぱいοおみくろんυうぷしろん έχουν μήκος μεγαλύτερο από 80 χαρακτήρες. Ηいーた προεπιλεγμένη ενέργεια είναι ηいーた εμφάνιση της τρέχουσας γραμμής.

length($0) > 80

Εμφανίζει τたうοおみくろんνにゅー αριθμό τたうωおめがνにゅー λέξεων[Επεξεργασία | επεξεργασία κώδικα]

Μετρά τις λέξεις της εισόδου κかっぱαあるふぁιいおた εμφανίζει τたうοおみくろんνにゅー αριθμό τたうωおめがνにゅー γραμμών, τたうωおめがνにゅー λέξεων κかっぱαあるふぁιいおた τたうωおめがνにゅー χαρακτήρων (όπως τたうοおみくろん wc):

{
    w += NF
    c += length($0) + 1
}
END { print NR, w, c }

Δでるたεいぷしろんνにゅー υπάρχει πρότυπο γがんまιいおたαあるふぁ τたうηいーたνにゅー πρώτη ενέργεια τたうοおみくろんυうぷしろん προγράμματος, επομένως ταιριάζει κάθε γραμμή της εισόδου κかっぱαあるふぁιいおた οおみくろんιいおた ενέργειες πぱいοおみくろんυうぷしろん αυξάνουν τους μετρητές εκτελούνται σしぐまεいぷしろん κάθε γραμμή. Ηいーた έκφραση w += NF είναι συντομογραφία της w = w + NF.

Σύνολο τελευταίων λέξεων[Επεξεργασία | επεξεργασία κώδικα]

{ s += $NF }
END { print s + 0 }

Ηいーた s αυξάνεται μみゅーεいぷしろん τたうηいーたνにゅー αριθμητική τιμή της $NF πぱいοおみくろんυうぷしろん είναι ηいーた τελευταία λέξη της γραμμής (όπως ορίζεται από τたうοおみくろん διαχωριστή πεδίων της AWK, πぱいοおみくろんυうぷしろん έχει τたうηいーたνにゅー προκαθορισμένη τιμή τたうοおみくろんυうぷしろん λευκού κενού). Ηいーた NF είναι οおみくろん αριθμός τたうωおめがνにゅー πεδίων της τρέχουσας γραμμής, πぱい.χかい. 4. Επειδή $4 είναι ηいーた τιμή τたうοおみくろんυうぷしろん τέταρτου πεδίου, ηいーた $NF δίνει πάντα τたうηいーたνにゅー τιμή τたうοおみくろんυうぷしろん τελευταίου πεδίου μιας γραμμής. Οおみくろん τελεστής $ παίρνει ένα όρισμα κかっぱαあるふぁιいおた έχει τたうηいーたνにゅー υψηλότερη προτεραιότητα (operator precedence). Αあるふぁνにゅー μみゅーιいおたαあるふぁ γραμμή δでるたεいぷしろんνにゅー έχει πεδία, τότε ηいーた NF είναι 0, $0 είναι ολόκληρη ηいーた γραμμή, πぱいοおみくろんυうぷしろん είναι άδεια (εκτός από τたうαあるふぁ κενά πぱいοおみくろんυうぷしろん μπορεί νにゅーαあるふぁ περιέχει), επομένως ηいーた αριθμητική τιμή τότε είναι 0.

Σしぐまτたうοおみくろん τέλος της εισόδου, τたうοおみくろん πρότυπο END ταιριάζει κかっぱαあるふぁιいおた τυπώνεται ηいーた s. Αあるふぁνにゅー δでるたεいぷしろんνにゅー έχουν υπάρξει γραμμές εισόδου, δでるたεいぷしろん θしーたαあるふぁ έχει δοθεί ποτέ τιμή σしぐまτたうηいーたνにゅー s, ηいーた οποία κかっぱαあるふぁιいおた θしーたαあるふぁ είναι ηいーた κενή συμβολοσειρά. Ηいーた πρόσθεση τたうοおみくろんυうぷしろん μηδέν σしぐまεいぷしろん μみゅーιいおたαあるふぁ συμβολοσειρά αποτελεί ιδίωμα της AWK πぱいοおみくろんυうぷしろん εξαναγκάζει μみゅーιいおたαあるふぁ συμβολοσειρά νにゅーαあるふぁ γίνει αριθμητική τιμή (coercion). Αντίθετα, ηいーた συνένωση μみゅーεいぷしろん κενή συμβολοσειρά εξαναγκάζει έναν αριθμό νにゅーαあるふぁ γίνει συμβολοσειρά, πぱい.χかい. s "". (Δでるたεいぷしろんνにゅー υπάρχει τελεστής συνένωσης συμβολοσειρών, απλά αυτές τοποθετούνται ηいーた μみゅーιいおたαあるふぁ δίπλα σしぐまτたうηいーたνにゅー άλλη.) Λόγω τたうοおみくろんυうぷしろん εξαναγκασμού τたうοおみくろん πρόγραμμα τυπώνει 0 γがんまιいおたαあるふぁ κενή είσοδο, αλλιώς θしーたαあるふぁ τύπωνε μみゅーιいおたαあるふぁ κενή γραμμή.

Ταίριασμα μみゅーεいぷしろん ένα εύρος από γραμμές εισόδου[Επεξεργασία | επεξεργασία κώδικα]

$ yes Wikipedia | awk 'NR % 4 == 1, NR % 4 == 3 { printf "%6d  %s\n", NR, $0 }' | sed 7q
     1  Wikipedia
     2  Wikipedia
     3  Wikipedia
     5  Wikipedia
     6  Wikipedia
     7  Wikipedia
     9  Wikipedia
$

Ηいーた εντολή yes τυπώνει συνεχόμενα τたうοおみくろん όρισμά της (εξορισμού τたうοおみくろん γράμμα "y") σしぐまεいぷしろん μみゅーιいおたαあるふぁ γραμμή. Σしぐまεいぷしろん αυτό τたうοおみくろん παράδειγμα, ηいーた εντολή τυπώνει τたうηいーた λέξη "Wikipedia". Ηいーた εντολή της ενέργειας τυπώνει τις γραμμές αριθμημένες. Ηいーた συνάρτηση printf προσομοιώνει τたうηいーたνにゅー printf της C, κかっぱαあるふぁιいおた λειτουργεί μみゅーεいぷしろん παρόμοιο τρόπο μみゅーεいぷしろん τたうηいーたνにゅー εντολή print πぱいοおみくろんυうぷしろん έχει προαναφερθεί. Τたうοおみくろん πρότυπο προς ταίριασμα λειτουργεί ως εξής: NR είναι οおみくろん αριθμός τたうωおめがνにゅー εγγραφών, συνήθως οおみくろんιいおた γραμμές εισόδου, πぱいοおみくろんυうぷしろん έχει ήδη διαβάσει ηいーた AWK, δηλαδή οおみくろん τρέχων αριθμός γραμμής πぱいοおみくろんυうぷしろん αρχίζει από τたうοおみくろん 1 για τたうηいーたνにゅー πρώτη γραμμή της εισόδου. Οおみくろん % είναι οおみくろん τελεστής υπολοίπου από διαίρεση (modulo). Ηいーた NR % 4 == 1 είναι αληθής γがんまιいおたαあるふぁ τたうηいーたνにゅー πρώτη, τたうηいーたνにゅー πέμπτη, τたうηいーたνにゅー ένατη, κかっぱλらむだπぱい, γραμμές της εισόδου ενώ ηいーた NR % 4 == 3 είναι αληθής γがんまιいおたαあるふぁ τたうηいーたνにゅー τρίτη, τたうηいーたνにゅー έβδομη, τたうηいーたνにゅー ενδέκατη, κかっぱλらむだπぱい, γραμμές της εισόδου. Τたうοおみくろん πρότυπο τたうοおみくろんυうぷしろん εύρους είναι ψευδές μέχρι νにゅーαあるふぁ ταιριάξει τたうοおみくろん πρώτο μέρος, σしぐまτたうηいーた γραμμή 1, κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια μένει αληθές μέχρι κかっぱαあるふぁιいおた όταν ταιριάξει τたうοおみくろん δεύτερο μέρος, σしぐまτたうηいーた γραμμή 3. Σしぐまτたうηいーた συνέχεια μένει ψευδές μέχρι τたうοおみくろん πρώτο μέρος νにゅーαあるふぁ ταιριάξει πάλι σしぐまτたうηいーた γραμμή 5. Ηいーた εντολή sed χρησιμοποιείται γがんまιいおたαあるふぁ νにゅーαあるふぁ τυπώσει τις πρώτες 7 γραμμές, ώστε ηいーた yes νにゅーαあるふぁ μみゅーηいーたνにゅー τρέχει γがんまιいおたαあるふぁ πάντα. Αあるふぁνにゅー είναι διαθέσιμη ηいーた εντολή head, είναι ισοδύναμη μみゅーεいぷしろん τたうηいーたνにゅー head -n7.

Όταν τたうοおみくろん πρώτο μέρος ενός προτύπου εύρους είναι πάντα αληθές, πぱい.χかい. 1, μπορεί νにゅーαあるふぁ χρησιμοποιηθεί γがんまιいおたαあるふぁ νにゅーαあるふぁ αρχίσει τたうοおみくろん εύρος σしぐまτたうηいーたνにゅー αρχή της εισόδου. Όμοια, αあるふぁνにゅー τたうοおみくろん δεύτερο μέρος είναι πάντα ψευδές, πぱい.χかい. 0, τたうοおみくろん εύρος εξακολουθεί μέχρι τたうοおみくろん τέλος της εισόδου, τότε ηいーた:

/^--κόψτε εδώ--$/, 0

τυπώνει γραμμές της εισόδου από τたうηいーたνにゅー πρώτη γραμμή πぱいοおみくろんυうぷしろん ταιριάζει μみゅーεいぷしろん τたうηいーたνにゅー κανονική έκφραση ^--κόψτε εδώ--$ (μみゅーιいおたαあるふぁ γραμμή πぱいοおみくろんυうぷしろん περιέχει μόνο τたうηいーた φράση "--κόψτε εδώ--"), μέχρι τたうοおみくろん τέλος.

Υπολογισμός συχνοτήτων λέξεων[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろん υπολογισμός τたうωおめがνにゅー συχνοτήτων λέξεων χρησιμοποιεί συσχετιστικούς πίνακες (associative arrays):

BEGIN {
    FS="[^a-zA-Z]+"
}
{
     for (i=1; i<=NF; i++)
          words[tolower($i)]++
}
END {
    for (i in words)
         print i, words[i]
}

Ηいーた ενότητα BEGIN θέτει τたうοおみくろん διαχωριστικό πεδίων νにゅーαあるふぁ είναι κάθε ακολουθία από μみゅーηいーた-αλφαβητικούς χαρακτήρες (τたうαあるふぁ διαχωριστικά μπορούν νにゅーαあるふぁ είναι κανονικές εκφράσεις). Ακολουθεί μみゅーιいおたαあるふぁ ενέργεια πぱいοおみくろんυうぷしろん επαναλαμβάνεται σしぐまεいぷしろん κάθε γραμμή της εισόδου. Σしぐまεいぷしろん αυτήν τたうηいーたνにゅー περίπτωση, γがんまιいおたαあるふぁ κάθε πεδίο της γραμμής, προστίθεται 1 στον αριθμό τたうωおめがνにゅー φορών πぱいοおみくろんυうぷしろん αυτή ηいーた λέξη, πぱいοおみくろんυうぷしろん έχει μετατραπεί σしぐまεいぷしろん μικρά γράμματα, εμφανίζεται. Τέλος, σしぐまτたうηいーたνにゅー ενότητα END, τυπώνονται οおみくろんιいおた λέξεις μみゅーεいぷしろん τις συχνότητές τους. Ηいーた γραμμή

for (i in words)

δημιουργεί ένα βρόχο επανάληψης πάνω στις λέξεις τたうοおみくろんυうぷしろん πίνακα, πぱいοおみくろんυうぷしろん θέτει τたうοおみくろん i ίσο μみゅーεいぷしろん κάθε δείκτη τたうοおみくろんυうぷしろん πίνακα. Αυτό διαφέρει σしぐまεいぷしろん σχέση μみゅーεいぷしろん τις περισσότερες άλλες γλώσσες, στις οποίες ένας τέτοιος βρόχος θしーたαあるふぁ επαναλαμβανόταν γがんまιいおたαあるふぁ κάθε τιμή τたうοおみくろんυうぷしろん πίνακα. Οおみくろん βρόχος δηλαδή εμφανίζει κάθε λέξη μαζί μみゅーεいぷしろん τたうηいーた συχνότητα πぱいοおみくろんυうぷしろん αυτή εμφανίστηκε.

Ταίριασμα προτύπου από τたうηいーた γραμμή εντολών[Επεξεργασία | επεξεργασία κώδικα]

Τたうοおみくろん πρόγραμμα μπορεί νにゅーαあるふぁ αναπαρασταθεί μみゅーεいぷしろん πολλούς τρόπους. Οおみくろん πρώτος χρησιμοποιεί τたうοおみくろん κέλυφος Bourne γがんまιいおたαあるふぁ νにゅーαあるふぁ δημιουργήσει ένα σενάριο κελύφους πぱいοおみくろんυうぷしろん κάνει τたうαあるふぁ πάντα κかっぱαあるふぁιいおた είναι οおみくろん συντομότερος τρόπος:

$ cat grepinawk
pattern=$1
shift
awk '/'$pattern'/ { print FILENAME ":" $0 }' $*
$

Τたうοおみくろん πρότυπο $pattern σしぐまτたうηいーたνにゅー εντολή της awk δでるたεいぷしろんνにゅー προστατεύεται από εισαγωγικά. Ένα πρότυπο από μόνο τたうοおみくろんυうぷしろん ελέγχει αあるふぁνにゅー ολόκληρη ηいーた γραμμή ($0) ταιριάζει. Ηいーた FILENAME περιέχει τたうοおみくろん τρέχον όνομα αρχείου. Όπως έχει προαναφέρθηκε, ηいーた awk δでるたεいぷしろんνにゅー έχει τελεστή συνένωσης αλλά ηいーた απλή παράθεση δύο συμβολοσειρών αρκεί γがんまιいおたαあるふぁ τたうηいーた συνένωσή τους. Τたうοおみくろん $0 επεκτείνεται σしぐまτたうηいーたνにゅー αρχική γραμμή εισόδου.

Υπάρχουν διάφοροι τρόποι νにゅーαあるふぁ γραφεί τたうοおみくろん παράδειγμα. Τたうοおみくろん παρακάτω σενάριο κελύφους έχει πρόσβαση σしぐまτたうοおみくろん περιβάλλον απευθείας μέσα από τたうηいーたνにゅー awk:

$ cat grepinawk
pattern=$1
shift
awk '$0 ~ ENVIRON["pattern"] { print FILENAME ":" $0 }' $*
$

Τたうοおみくろん σενάριο αυτό χρησιμοποιεί τたうηいーたνにゅー ENVIRON, πぱいοおみくろんυうぷしろん είναι πίνακας πぱいοおみくろんυうぷしろん αναπαριστά τたうοおみくろん περιβάλλον: οおみくろんιいおた δείκτες είναι ονόματα μεταβλητών κかっぱαあるふぁιいおた τたうαあるふぁ αποτελέσματα είναι τιμές μεταβλητών, παρόμοια σしぐまεいぷしろん λειτουργικότητα μみゅーεいぷしろん τたうηいーた συνάρτηση getenv διάφορων πρότυπων βιβλιοθηκών κかっぱαあるふぁιいおた τたうοおみくろんυうぷしろん POSIX. Τたうοおみくろん σενάριο δημιουργεί μみゅーιいおたαあるふぁ μεταβλητή περιβάλλοντος pattern πぱいοおみくろんυうぷしろん περιέχει τたうηいーたνにゅー πρώτη παράμετρο κかっぱαあるふぁιいおた σしぐまτたうηいーた συνέχεια τたうηいーた διαγράφει κかっぱαあるふぁιいおた δίνει εντολή σしぐまτたうηいーたνにゅー awk νにゅーαあるふぁ αναζητήσει τたうοおみくろん πρότυπο pattern σしぐまεいぷしろん κάθε αρχείο.

Οおみくろん τελεστής ~ ελέγχει αあるふぁνにゅー οおみくろん αριστερός τたうοおみくろんυうぷしろん τελεστέος ταιριάζει μみゅーεいぷしろん τたうοおみくろん δεξιό, ενώ οおみくろん αντίστροφος τελεστής είναι οおみくろん !~. Μみゅーιいおたαあるふぁ κανονική έκφραση είναι απλά συμβολοσειρά κかっぱαあるふぁιいおた μπορεί νにゅーαあるふぁ αποθηκευτεί σしぐまεいぷしろん μみゅーιいおたαあるふぁ μεταβλητή.

Οおみくろん επόμενος τρόπος χρησιμοποιεί ανάθεση μεταβλητών της γραμμής εντολών, όπου μみゅーιいおたαあるふぁ παράμετρος σしぐまτたうηいーたνにゅー awk μπορεί νにゅーαあるふぁ θεωρηθεί σしぐまαあるふぁνにゅー ανάθεση σしぐまεいぷしろん μみゅーιいおたαあるふぁ μεταβλητή:

$ cat grepinawk
pattern=$1
shift
awk '$0 ~ pattern { print FILENAME ":" $0 }' "pattern=$pattern" $*
$

Τέλος, οおみくろん ακόλουθος κώδικας είναι γραμμένος αμιγώς σしぐまεいぷしろん awk, χωρίς βοήθεια από κέλυφος ή γνώσεις γがんまιいおたαあるふぁ τたうηいーたνにゅー υλοποίηση τたうοおみくろんυうぷしろん σεναρίου awk (όπως κάνει ηいーた ανάθεση μεταβλητών της γραμμής εντολών παραπάνω), αλλά είναι μεγαλύτερος:

BEGIN {
    pattern = ARGV[1]
    for (i = 1; i < ARGC; i++) # διαγράφει τたうηいーたνにゅー 1ηいーた παράμετρο
        ARGV[i] = ARGV[i + 1]
    ARGC—if (ARGC == 1) { # μόνο τたうοおみくろん πρότυπο υπήρχε, άρα διάβασε από τたうηいーたνにゅー είσοδο
        ARGC = 2
        ARGV[1] = "-"
    }
}
$0 ~ pattern { print FILENAME ":" $0 }

Τたうοおみくろん BEGIN χρειάζεται όχι μόνο γがんまιいおたαあるふぁ νにゅーαあるふぁ εξάγει τたうηいーたνにゅー πρώτη παράμετρο, αλλά κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ νにゅーαあるふぁ τたうηいーたνにゅー εμποδίσει από τたうοおみくろん νにゅーαあるふぁ ερμηνευτεί σしぐまαあるふぁνにゅー όνομα αρχείου όταν τελειώσει ηいーた ενότητα BEGIN. Ηいーた ARGC, πぱいοおみくろんυうぷしろん είναι οおみくろん αριθμός τたうωおめがνにゅー παραμέτρων, είναι πάντα ≥1, επειδή ηいーた ARGV[0] είναι τたうοおみくろん όνομα της εντολής πぱいοおみくろんυうぷしろん εκτέλεσε τたうοおみくろん σενάριο, συνήθως ηいーた συμβολοσειρά "awk". Επίσης ηいーた ARGV[ARGC] είναι ηいーた κενή συμβολοσειρά, "". Οおみくろん χαρακτήρας # αρχίζει ένα σχόλιο μέχρι τたうοおみくろん τέλος της γραμμής.

Σしぐまτたうηいーたνにゅー ενότητα if ηいーた awk ελέγχει αあるふぁνにゅー πρέπει νにゅーαあるふぁ διαβάσει από τたうηいーたνにゅー είσοδο πぱいρろーιいおたνにゅー εκτελέσει τたうηいーたνにゅー εντολή. Αυτό σημαίνει ότι ηいーた εντολή

awk 'prog'

λειτουργεί μόνο επειδή τたうοおみくろん ότι δでるたεいぷしろんνにゅー υπάρχουν ονόματα αρχείων ελέγχεται πぱいρろーιいおたνにゅー εκτελεστεί τたうοおみくろん prog! Αあるふぁνにゅー ηいーた ARGC τεθεί ίση μみゅーεいぷしろん 1 ώστε νにゅーαあるふぁ μみゅーηいーたνにゅー υπάρχουν παράμετροι, ηいーた awk απλά θしーたαあるふぁ τερματίσει γιατί δでるたεいぷしろん θしーたαあるふぁ βλέπει άλλα αρχεία εισόδου. Είναι επομένως ανάγκη τたうοおみくろん διάβασμα από τたうηいーたνにゅー είσοδο μみゅーεいぷしろん τたうοおみくろん ειδικό όνομα αρχείου -.

Αυτόνομα σενάρια AWK[Επεξεργασία | επεξεργασία κώδικα]

Όπως κかっぱαあるふぁιいおた σしぐまεいぷしろん άλλες γλώσσες προγραμματισμού, είναι δυνατή ηいーた δημιουργία αυτόνομων σεναρίων σしぐまεいぷしろん AWK μみゅーεいぷしろん τたうηいーた χρήση της λεγόμενης σύνταξης "shebang", πぱいοおみくろんυうぷしろん τοποθετεί μみゅーιいおたαあるふぁ σήμανση σしぐまτたうηいーたνにゅー αρχή τたうοおみくろんυうぷしろん αρχείου γがんまιいおたαあるふぁ τたうοおみくろん πρόγραμμα μみゅーεいぷしろん τたうοおみくろん οποίο εκτελούνται.

Γがんまιいおたαあるふぁ παράδειγμα, μπορεί νにゅーαあるふぁ κατασκευαστεί μみゅーιいおたαあるふぁ εντολή τたうοおみくろんυうぷしろん UNIX μみゅーεいぷしろん όνομα hello.awk πぱいοおみくろんυうぷしろん νにゅーαあるふぁ τυπώνει τたうηいーた συμβολοσειρά "Γがんまεいぷしろんιいおたαあるふぁ σしぐまοおみくろんυうぷしろん, κόσμε!", μみゅーεいぷしろん τたうηいーた δημιουργία ενός αρχείου hello.awk πぱいοおみくろんυうぷしろん νにゅーαあるふぁ περιέχει τις εξής γραμμές:

#!/usr/bin/awk -f
BEGIN { print "Γがんまεいぷしろんιいおたαあるふぁ σしぐまοおみくろんυうぷしろん, κόσμε!" }

Ηいーた επιλογή -f πληροφορεί τたうηいーたνにゅー awk ότι ηいーた παράμετρος πぱいοおみくろんυうぷしろん ακολουθεί είναι τたうοおみくろん αρχείο από τたうοおみくろん οποίο θしーたαあるふぁ διαβαστεί τたうοおみくろん πρόγραμμα awk κかっぱαあるふぁιいおた συμπληρώνεται από τたうοおみくろん κέλυφος τたうηいーた στιγμή της εκτέλεσης.

Βιβλία[Επεξεργασία | επεξεργασία κώδικα]

  • Aho, Alfred V.· Kernighan, Brian W.· Weinberger, Peter J. (1 Ιανουαρίου 1988). The AWK Programming LanguageΑπαιτείται δωρεάν εγγραφή. New York, NY: Addison-Wesley. ISBN 0-201-07981-X. Ανακτήθηκε στις 16 Απριλίου 2009.  Ηいーた σελίδα τたうοおみくろんυうぷしろん βιβλίου περιλαμβάνει εκδόσεις της τρέχουσας υλοποίησης της Awk κかっぱαあるふぁιいおた συνδέσμους προς άλλες υλοποιήσεις.
  • Robbins, Arnold (15 Μαΐου 2001). Effective awk Programming (3rd έκδοση). Sebastopol, CA: O'Reilly Media. ISBN 0-596-00070-7. Ανακτήθηκε στις 16 Απριλίου 2009. 
  • Dougherty, Dale· Robbins, Arnold (1 Μαρτίου 1997). sed & awk (2nd έκδοση). Sebastopol, CA: O'Reilly Media. ISBN 1-56592-225-5. Ανακτήθηκε στις 16 Απριλίου 2009. 
  • Robbins, Arnold (2000). Effective Awk Programming: A User's Guide for Gnu Awk (1.0.3 έκδοση). Bloomington, IN: iUniverse. ISBN 0595100341. Ανακτήθηκε στις 16 Απριλίου 2009.  Οおみくろん Arnold Robbins συντηρούσε τたうηいーたνにゅー υλοποίηση GNU Awk της AWK γがんまιいおたαあるふぁ πάνω από 10 χρόνια. Επίσης τたうοおみくろん ελεύθερο εγχειρίδιο της GNU Awk εκδόθηκε από τたうοおみくろんνにゅー εκδοτικό οίκο O'Reilly τたうοおみくろん Μάιο 2001. Στις αναφορές τたうοおみくろんυうぷしろん βιβλίου υπάρχει σύνδεσμος γがんまιいおたαあるふぁ κατέβασμα τたうοおみくろんυうぷしろん εγχειριδίου.

Δείτε επίσης[Επεξεργασία | επεξεργασία κώδικα]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. «The Single UNIX Specification, Version 3, Utilities Interface Table». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 5 Ιανουαρίου 2018. Ανακτήθηκε στις 5 Μαΐου 2011. 
  2. «Linux Standard Base Core Specification 4.0, Chapter 15. Commands and Utilities». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 23 Ιουλίου 2011. Ανακτήθηκε στις 5 Μαΐου 2011. 
  3. «The A-Z of Programming Languages: AWK». Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 26 Οκτωβρίου 2008. Ανακτήθηκε στις 5 Μαΐου 2011. 
  4. Raymond, Eric S. «Applying Minilanguages». The Art of Unix Programming. Case Study: awk. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 30 Ιουλίου 2008. Ανακτήθηκε στις 11 Μαΐου 2010. The awk action language is Turing-complete, and can read and write files. 
  5. "AWK is a language for processing files of text. A file is treated as a sequence of records, and by default each line is a record. Each line is broken up into a sequence of fields, so we can think of the first word in a line as the first field, the second word as the second field, and so on. An AWK program is of [sic] a sequence of pattern-action statements. AWK reads the input a line at a time. A line is scanned for each pattern in the program, and for each pattern that matches, the associated action is executed." - Alfred V. Aho The A-Z of Programming Languages: AWK Αρχειοθετήθηκε 2008-08-08 σしぐまτたうοおみくろん Wayback Machine.

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]