Ονομα
gawk - γλώσσα σάρωσης και επεξεργασίας
Σύνοψη
μπούφος Επιλογές στυλ POSIX ή GNU -φά αρχείου προγράμματος -- αρχείο …μπούφος Επιλογές στυλ POSIX ή GNU -- πρόγραμμα-κείμενο αρχείο … pgawk Επιλογές στυλ POSIX ή GNU -φά αρχείου προγράμματος -- αρχείο …pgawk Επιλογές στυλ POSIX ή GNU -- πρόγραμμα-κείμενο αρχείο … Μπούφος είναι η εφαρμογή του GNU Project της γλώσσας προγραμματισμού AWK. Συμμορφώνεται με τον ορισμό της γλώσσας στο πρότυπο POSIX 1003.2 Command Language and Utilities Standard. Αυτή η έκδοση με τη σειρά της βασίζεται στην περιγραφή στο Η γλώσσα προγραμματισμού AWK , από τους Aho, Kernighan και Weinberger, με τα επιπλέον χαρακτηριστικά που βρέθηκαν στην έκδοση System UN Release 4 του UNIX awk . Μπούφος παρέχει επίσης πιο πρόσφατα Bell Laboratories awk επεκτάσεις και ορισμένες επεκτάσεις για το GNU. Pgawk είναι η έκδοση του προφίλ μπούφος . Είναι πανομοιότυπο με κάθε τρόπο να μπούφος , εκτός από το ότι τα προγράμματα εκτελούνται πιο αργά και αυτόματα παράγει ένα προφίλ εκτέλεσης στο αρχείο awkprof.out όταν είναι έτοιμο. Δείτε το --Προφίλ παρακάτω. Η γραμμή εντολών αποτελείται από επιλογές έως μπούφος το ίδιο το κείμενο του προγράμματος AWK (αν δεν παρέχεται μέσω του -φά ή --αρχείο επιλογές) και τις τιμές που θα διατεθούν στο ARGC και ARGV προκαθορισμένες μεταβλητές AWK. Μπούφος οι επιλογές μπορεί να είναι είτε παραδοσιακές επιλογές POSIX με ένα γράμμα είτε επιλογές μακριών στυλ GNU. Οι επιλογές POSIX ξεκινούν με ένα μόνο `` - '', ενώ οι μακριές επιλογές αρχίζουν με `` - ''. Παρέχονται μεγάλες επιλογές τόσο για τις λειτουργίες που σχετίζονται με το GNU όσο και για τις λειτουργίες με εντολή POSIX. Σύμφωνα με το πρότυπο POSIX, μπούφος -επιλεκτικές επιλογές παρέχονται μέσω επιχειρημάτων προς το -W επιλογή. Πολλαπλούς -W μπορεί να παρέχονται επιλογές -W έχει μια αντίστοιχη μακρά επιλογή, όπως περιγράφεται παρακάτω. Τα επιχειρήματα για τις μακριές επιλογές συνδέονται είτε με την επιλογή με ένα = χωρίς παρεμβολές, ή μπορεί να παρέχονται στο επόμενο παράθυρο γραμμής εντολών. Οι μακρές επιλογές μπορεί να συντομευθούν, αρκεί η σύντμηση να παραμείνει μοναδική. Μπούφος δέχεται τις ακόλουθες επιλογές, οι οποίες παρατίθενται αλφαβητικά. -ΦΑ fs - διαχωριστικό χωροδικτύου fs Χρήση fs για τον διαχωριστή πεδίου εισαγωγής (η τιμή του FS προκαθορισμένη μεταβλητή). -v var = val --αναθέτω var = val Ορίστε την τιμή val στη μεταβλητή var , πριν ξεκινήσει η εκτέλεση του προγράμματος. Τέτοιες μεταβλητές τιμές είναι διαθέσιμες στο ΑΡΧΙΣΕΙ μπλοκ ενός προγράμματος AWK. -φά αρχείου προγράμματος --αρχείο αρχείου προγράμματος Διαβάστε την πηγή του προγράμματος AWK από το αρχείο αρχείου προγράμματος , αντί του πρώτου επιχειρήματος γραμμής εντολών. Πολλαπλούς -φά (ή --αρχείο) μπορούν να χρησιμοποιηθούν. -mf NNN -κύριος NNN Ορίστε διάφορα όρια μνήμης στην τιμή NNN . ο φά σημαία ορίζει το μέγιστο αριθμό πεδίων και το r σημαία ορίζει το μέγιστο μέγεθος εγγραφής. Αυτές οι δύο σημαίες και το -m είναι από την ερευνητική έκδοση του Bell Laboratories του UNIX awk . Αγνοούνται από αυτούς μπούφος , Από μπούφος δεν έχει προκαθορισμένα όρια. -W compat -W παραδοσιακό --compat --παραδοσιακός Πέφτω πάνω συμβατότητα τρόπος. Σε κατάσταση συμβατότητας, μπούφος συμπεριφέρεται ταυτόσημα με το UNIX awk . καμία από τις εξειδικευμένες επεκτάσεις GNU δεν αναγνωρίζεται. Η χρήση του --παραδοσιακός προτιμάται έναντι των άλλων μορφών αυτής της επιλογής. Βλέπω GNU EXTENSIONS, παρακάτω, για περισσότερες πληροφορίες. -W copyleft -W πνευματικά δικαιώματα --copyleft --πνευματική ιδιοκτησία Εκτυπώστε τη σύντομη έκδοση του μηνύματος πληροφοριών πνευματικών δικαιωμάτων GNU στην τυπική έξοδο και βγείτε με επιτυχία. -W μεταβλητές χωματερής= αρχείο --dump-μεταβλητές= αρχείο Εκτυπώστε μια ταξινομημένη λίστα των συνολικών μεταβλητών, τους τύπους τους και τις τελικές τιμές τους αρχείο . Εάν όχι αρχείο παρέχεται, μπούφος χρησιμοποιεί ένα αρχείο που ονομάζεται awkvars.out στον τρέχοντα κατάλογο. Έχοντας μια λίστα με όλες τις παγκόσμιες μεταβλητές είναι ένας καλός τρόπος να αναζητήσετε τυπογραφικά λάθη στα προγράμματά σας. Θα χρησιμοποιούσατε επίσης αυτήν την επιλογή εάν διαθέτετε ένα μεγάλο πρόγραμμα με πολλές λειτουργίες και θέλετε να είστε βέβαιοι ότι οι λειτουργίες σας δεν χρησιμοποιούν ακούσια τις παγκόσμιες μεταβλητές που προτίθεστε να είστε τοπικοί. (Αυτό είναι ένα ιδιαίτερα εύκολο λάθος να κάνετε με απλά ονόματα μεταβλητών όπως Εγώ, j, και ούτω καθεξής.) -W βοήθεια -W χρήση --βοήθεια --χρήση Εκτυπώστε μια σχετικά σύντομη περίληψη των διαθέσιμων επιλογών στην τυπική έξοδο. (Ανά Πρότυπα κωδικοποίησης GNU , αυτές οι επιλογές προκαλούν άμεση, επιτυχημένη έξοδο.) -W χνούδι= θανατηφόρο --στουπί= θανατηφόρο Παρέχετε προειδοποιήσεις σχετικά με κατασκευές που είναι αμφίβολες ή μη φορητές σε άλλες υλοποιήσεις του AWK. Με προαιρετικό όρισμα του μοιραίος, οι προειδοποιήσεις για χνούδια γίνονται θανάσιμα λάθη. Αυτό μπορεί να είναι δραστικό, αλλά η χρήση του θα ενθαρρύνει σίγουρα την ανάπτυξη καθαρότερων προγραμμάτων AWK. -W χνούδι-παλιά - παλιά Παρέχετε προειδοποιήσεις σχετικά με κατασκευές που δεν είναι φορητές στην αρχική έκδοση του Unix awk . -W gen-po --gen-po Σάρωση και ανάλυση του προγράμματος AWK και δημιουργία ενός GNU .ταχυδρομείο σε μορφή αρχείου σε τυποποιημένη έξοδο με καταχωρήσεις για όλες τις εντοπίσιμες συμβολοσειρές του προγράμματος. Το ίδιο το πρόγραμμα δεν εκτελείται. Δείτε το GNU gettext διανομή για περισσότερες πληροφορίες σχετικά με .ταχυδρομείο αρχεία. -W μη δεκαδικά δεδομένα - μη-δεκαδικά δεδομένα Αναγνώριση οκταγωνικών και δεκαεξαδικών τιμών στα δεδομένα εισόδου. Χρησιμοποιήστε αυτή την επιλογή με μεγάλη προσοχή! -W posix --posix Αυτό ενεργοποιείται συμβατότητα με τους ακόλουθους πρόσθετους περιορισμούς: * Χ οι ακολουθίες διαφυγής δεν αναγνωρίζονται. * Μόνο ο χώρος και η καρτέλα λειτουργούν ως χωριστές πεδίων όταν FS έχει οριστεί σε ένα χώρο, η νέα γραμμή δεν είναι. * Δεν μπορείτε να συνεχίσετε τις γραμμές μετά ? και :. * Το συνώνυμο func για τη λέξη-κλειδί λειτουργία δεν αναγνωρίζεται. * Οι χειριστές ** και **= δεν μπορεί να χρησιμοποιηθεί στη θέση του ^ και ^=. * ο fflush () δεν είναι διαθέσιμη. -W= prof_file --Προφίλ= prof_file Αποστολή δεδομένων δημιουργίας προφίλ σε prof_file . Η προεπιλογή είναι awkprof.out. Όταν τρέχετε με μπούφος , το προφίλ είναι απλά μια `` αρκετά τυπωμένη '' έκδοση του προγράμματος. Όταν τρέχετε με pgawk , το προφίλ περιέχει μετρήσεις εκτέλεσης κάθε εντολής στο πρόγραμμα στο αριστερό περιθώριο και μετρήσεις κλήσεων λειτουργίας για κάθε συνάρτηση που ορίζει ο χρήστης. -W επαν-διάστημα - διάστημα Ενεργοποίηση της χρήσης του εκφράσεις διαστήματος στην αντιστοίχιση τακτικής έκφρασης (βλ Κανονικές εκφράσεις, παρακάτω). Οι διαδοχικές εκφράσεις δεν ήταν παραδοσιακά διαθέσιμες στη γλώσσα AWK. Το πρότυπο POSIX τα πρόσθεσε, για να το κάνει awk και egrep συνεπείς μεταξύ τους. Ωστόσο, η χρήση τους είναι πιθανό να σπάσει τα παλιά προγράμματα AWK, έτσι μπούφος τους παρέχει μόνο εάν τους ζητηθεί με αυτήν την επιλογή ή πότε --posix καθορίζεται. -W πηγή πρόγραμμα-κείμενο --πηγή πρόγραμμα-κείμενο Χρήση πρόγραμμα-κείμενο ως πηγαίο κώδικα του προγράμματος AWK. Αυτή η επιλογή επιτρέπει την εύκολη ανάμιξη των λειτουργιών της βιβλιοθήκης (που χρησιμοποιείται μέσω του -φά και --αρχείο επιλογές) με τον πηγαίο κώδικα που έχει εισαχθεί στη γραμμή εντολών. Προορίζεται κυρίως για μεσαία έως μεγάλα προγράμματα AWK που χρησιμοποιούνται σε δέσμες ενεργειών κελύφους. -W έκδοση --εκδοχή Εκτυπώστε τις πληροφορίες έκδοσης για αυτό το συγκεκριμένο αντίγραφο του μπούφος στην τυπική έξοδο. Αυτό είναι χρήσιμο κυρίως για να μάθετε αν το τρέχον αντίγραφο του μπούφος στο σύστημά σας είναι ενημερωμένο σε σχέση με ό, τι διανέμει το Ίδρυμα Ελεύθερου Λογισμικού. Αυτό είναι επίσης χρήσιμο όταν αναφέρετε σφάλματα. (Ανά Πρότυπα κωδικοποίησης GNU , αυτές οι επιλογές προκαλούν άμεση, επιτυχημένη έξοδο.) -- Σηματοδοτήστε το τέλος των επιλογών. Αυτό είναι χρήσιμο για να επιτρέψει σε περαιτέρω επιχειρήματα στο ίδιο το πρόγραμμα AWK να ξεκινήσει με ένα `` - ''. Αυτό είναι κυρίως για λόγους συνέπειας με τη συνθήκη parsing argument που χρησιμοποιείται από τα περισσότερα άλλα προγράμματα POSIX. Σε κατάσταση συμβατότητας, όλες οι άλλες επιλογές επισημαίνονται ως μη έγκυρες, αλλιώς αγνοούνται. Κατά την κανονική λειτουργία, εφόσον έχει παρασχεθεί κείμενο προγράμματος, οι άγνωστες επιλογές μεταβιβάζονται στο πρόγραμμα AWK στο ARGV πίνακα για επεξεργασία. Αυτό είναι ιδιαίτερα χρήσιμο για την εκτέλεση προγραμμάτων AWK μέσω του εκτελέσιμου μηχανισμού διερμηνείας ``!! ''. ΥΛΟΠΟΙΗΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ AWK Ένα πρόγραμμα AWK αποτελείται από μια ακολουθία δηλώσεων δράσης-προτύπου και προαιρετικούς ορισμούς λειτουργιών. πρότυπο { δηλώσεις δράσης }λειτουργία όνομα ( λίστα παραμέτρων ) { δηλώσεις }
Μπούφος πρώτα διαβάζει την πηγή του προγράμματος από το αρχείου προγράμματος (ες), εάν ορίζεται, από τα επιχειρήματα σε --πηγή, ή από το πρώτο παράγωγο μη-επιλογής στη γραμμή εντολών. ο -φά και --πηγή οι επιλογές μπορούν να χρησιμοποιηθούν πολλές φορές στη γραμμή εντολών. Μπούφος διαβάζει το κείμενο του προγράμματος σαν να ήταν όλα αρχείου προγράμματος s και τα κείμενα προέλευσης της γραμμής εντολών είχαν συνδυαστεί. Αυτό είναι χρήσιμο για την κατασκευή βιβλιοθηκών των λειτουργιών AWK, χωρίς να χρειάζεται να τις συμπεριλάβετε σε κάθε νέο πρόγραμμα AWK που τις χρησιμοποιεί. Παρέχει επίσης τη δυνατότητα συγχώνευσης λειτουργιών βιβλιοθήκης με προγράμματα γραμμής εντολών. Η μεταβλητή περιβάλλοντος AWKPATH ορίζει μια διαδρομή αναζήτησης που θα χρησιμοποιηθεί κατά την εύρεση των αρχείων προέλευσης που ονομάζονται με το -φά επιλογή. Εάν αυτή η μεταβλητή δεν υπάρχει, η προεπιλεγμένη διαδρομή είναι".: / usr / τοπικό / κοινόχρηστο / awk". (Ο πραγματικός κατάλογος μπορεί να διαφέρει, ανάλογα με τον τρόπο μπούφος χτίστηκε και εγκαταστάθηκε). Εάν ένα όνομα αρχείου δίνεται στο -φά η επιλογή περιέχει ένα χαρακτήρα `` / '', δεν πραγματοποιείται αναζήτηση. Μπούφος εκτελεί προγράμματα AWK με την ακόλουθη σειρά. Κατ 'αρχάς, όλες οι μεταβλητές αναθέσεις που καθορίζονται μέσω του -v επιλογή. Επόμενο, μπούφος συντάσσει το πρόγραμμα σε μια εσωτερική μορφή. Επειτα, μπούφος εκτελεί τον κώδικα στο ΑΡΧΙΣΕΙ μπλοκ (ες) (εάν υπάρχει) και στη συνέχεια συνεχίζει να διαβάζει κάθε αρχείο με όνομα στο ARGV παράταξη. Εάν δεν υπάρχουν ονόματα αρχείων στη γραμμή εντολών, μπούφος διαβάζει την τυπική είσοδο. Εάν ένα όνομα αρχείου στη γραμμή εντολών έχει τη φόρμα var = val αντιμετωπίζεται ως μεταβλητή ανάθεση. Η μεταβλητή var θα δοθεί η τιμή val . (Αυτό συμβαίνει μετά από οποιαδήποτε ΑΡΧΙΣΕΙ Έχουν εκτελεστεί μπλοκ.) Η εκχώρηση μεταβλητής γραμμής εντολών είναι πολύ χρήσιμη για τη δυναμική εκχώρηση τιμών στις μεταβλητές που χρησιμοποιεί το AWK για τον έλεγχο του τρόπου κατανομής της εισόδου στα πεδία και τις εγγραφές. Είναι επίσης χρήσιμο για τον έλεγχο της κατάστασης αν χρειάζονται πολλαπλά περάσματα πάνω από ένα μόνο αρχείο δεδομένων. Αν η αξία ενός συγκεκριμένου στοιχείου ARGV είναι άδειο (''), μπούφος παραλείπει πάνω του. Για κάθε εγγραφή στην είσοδο, μπούφος δοκιμές για να δείτε αν ταιριάζει με οποιοδήποτε πρότυπο στο πρόγραμμα AWK. Για κάθε μοτίβο που αντιστοιχεί στην εγγραφή, τα συσχετισμένα δράση εκτελείται. Τα πρότυπα ελέγχονται με τη σειρά που εμφανίζονται στο πρόγραμμα. Τέλος, αφού εξαντληθεί όλη η είσοδος, μπούφος εκτελεί τον κώδικα στο ΤΕΛΟΣ μπλοκ (-α) (εάν υπάρχουν). Οι μεταβλητές AWK είναι δυναμικές. εμφανίζονται όταν χρησιμοποιούνται για πρώτη φορά. Οι τιμές τους είναι είτε αριθμοί κινητής υποδιαστολής είτε χορδές ή και οι δύο, ανάλογα με τον τρόπο με τον οποίο χρησιμοποιούνται. Το AWK διαθέτει επίσης μονοδιάστατες συστοιχίες. μπορούν να προσομοιωθούν συστοιχίες με πολλαπλές διαστάσεις. Αρκετές προκαθορισμένες μεταβλητές ορίζονται ως ένα πρόγραμμα εκτελείται. αυτά θα περιγραφούν ως απαραίτητα και θα συνοψιστούν παρακάτω. Κανονικά, τα αρχεία διαχωρίζονται με χαρακτήρες νέας γραμμής. Μπορείτε να ελέγξετε τον τρόπο διαχωρισμού των αρχείων, αναθέτοντας τιμές στην ενσωματωμένη μεταβλητή RS. Αν RS είναι οποιοσδήποτε μεμονωμένος χαρακτήρας, αυτός ο χαρακτήρας χωρίζει τα αρχεία. Σε διαφορετική περίπτωση, RS είναι μια κανονική έκφραση. Το κείμενο στην είσοδο που ταιριάζει με αυτήν την κανονική έκφραση διαχωρίζει την εγγραφή. Ωστόσο, σε κατάσταση συμβατότητας, χρησιμοποιείται μόνο ο πρώτος χαρακτήρας της τιμής συμβολοσειράς για τον διαχωρισμό εγγραφών. Αν RS έχει οριστεί στη μηδενική συμβολοσειρά, τότε οι εγγραφές διαχωρίζονται με κενές γραμμές. Πότε RS έχει οριστεί στη μηδενική συμβολοσειρά, ο χαρακτήρας νέας γραμμής λειτουργεί πάντοτε ως διαχωριστής πεδίων, εκτός από οποιαδήποτε τιμή FS μπορεί να έχει. Καθώς διαβάζεται κάθε εγγραφή εισόδου, μπούφος διαιρεί την εγγραφή σε πεδία , χρησιμοποιώντας την τιμή του FS μεταβλητή ως διαχωριστής πεδίου. Αν FS είναι ένας χαρακτήρας, τα πεδία διαχωρίζονται από αυτόν τον χαρακτήρα. Αν FS είναι η μηδενική συμβολοσειρά, τότε κάθε ξεχωριστός χαρακτήρας γίνεται ξεχωριστό πεδίο. Σε διαφορετική περίπτωση, FS αναμένεται να είναι μια πλήρη κανονική έκφραση. Στην ειδική περίπτωση FS είναι ένας χώρος, τα πεδία χωρίζονται από διαστήματα ή / και καρτέλες ή / και νέες γραμμές. (Αλλά δείτε τη συζήτηση του --posix, παρακάτω). ΣΗΜΕΙΩΣΗ: Η αξία του IGNORECASE (βλ. παρακάτω) επηρεάζει επίσης τον τρόπο κατανομής των πεδίων όταν FS είναι μια κανονική έκφραση και πώς χωρίζονται τα αρχεία όταν RS είναι μια κανονική έκφραση. Αν το ΠΕΔΙΑ ΠΕΡΙΟΧΗΣ η μεταβλητή έχει οριστεί σε μια χωριστή λίστα με αριθμούς, κάθε πεδίο αναμένεται να έχει σταθερό πλάτος και μπούφος χωρίζει την εγγραφή χρησιμοποιώντας τα καθορισμένα πλάτη. Η αξία του FS αγνοείται. Αντιστοίχιση νέας τιμής στο FS υπερισχύει η χρήση του ΠΕΔΙΑ ΠΕΡΙΟΧΗΣ, και επαναφέρει την προεπιλεγμένη συμπεριφορά. Κάθε πεδίο στο αρχείο εισόδου μπορεί να αναφέρεται από τη θέση του, $1, $2, και ούτω καθεξής. $0 είναι το πλήρες ρεκόρ. Τα πεδία δεν πρέπει να αναφέρονται από σταθερές: n = 5print $ n εκτυπώνει το πέμπτο πεδίο στην εγγραφή εισόδου. Η μεταβλητή NF έχει οριστεί ως ο συνολικός αριθμός των πεδίων στην εγγραφή εισόδου. Αναφορές σε μη υπάρχοντα πεδία (δηλαδή πεδία μετά $ NF) παράγουν το null-string. Ωστόσο, η ανάθεση σε ένα ανύπαρκτο πεδίο (π.χ., $ (NF + 2) = 5) αυξάνει την τιμή του NF, δημιουργεί τυχόν παρεμβαλλόμενα πεδία με τη μηδενική συμβολοσειρά ως τιμή τους και προκαλεί την τιμή του $0 να αναπληρωθούν, με τα πεδία να διαχωρίζονται από την τιμή του OFS. Οι αναφορές σε αρνητικά αριθμημένα πεδία προκαλούν ένα θανατηφόρο σφάλμα. Καταστροφή NF προκαλεί την απώλεια των τιμών πεδίων που έχουν περάσει από τη νέα τιμή και την τιμή του $0 να αναπληρωθούν, με τα πεδία να διαχωρίζονται από την τιμή του OFS. Η αντιστοίχιση μιας τιμής σε ένα υπάρχον πεδίο προκαλεί την ανοικοδόμηση ολόκληρης της εγγραφής όταν $0 αναφέρεται. Ομοίως, αποδίδοντας μια τιμή στο $0 προκαλεί την επαναφορά της εγγραφής, δημιουργώντας νέες τιμές για τα πεδία. Μπούφος Οι ενσωματωμένες μεταβλητές είναι οι εξής: ARGC Ο αριθμός των επιχειρημάτων γραμμής εντολών (δεν περιλαμβάνει επιλογές για το μπούφος , ή την πηγή του προγράμματος). ARGIND Ο δείκτης στο ARGV του τρέχοντος αρχείου που επεξεργάζεται. ARGV Πλαίσιο επιχειρήματα γραμμής εντολών. Ο πίνακας είναι ευρετηριασμένος από 0 έως ARGC - 1. Αλλαγή δυναμικά των περιεχομένων του ARGV μπορεί να ελέγξει τα αρχεία που χρησιμοποιούνται για δεδομένα. BINMODE Σε συστήματα μη POSIX, καθορίζει τη χρήση της λειτουργίας `` binary '' για όλα τα I / O αρχεία. Οι αριθμητικές τιμές 1, 2 ή 3, καθορίζουν ότι τα αρχεία εισόδου, τα αρχεία εξόδου ή όλα τα αρχεία, αντίστοιχα, θα πρέπει να χρησιμοποιούν δυαδικά I / O. Οι τιμές των συμβολοσειρών "r", ή "w" καθορίστε ότι τα αρχεία εισόδου ή τα αρχεία εξόδου, αντίστοιχα, θα πρέπει να χρησιμοποιούν δυαδικά I / O. Οι τιμές των συμβολοσειρών "rw" ή "wr" καθορίστε ότι όλα τα αρχεία θα πρέπει να χρησιμοποιούν δυαδικά I / O. Κάθε άλλη τιμή συμβολοσειράς αντιμετωπίζεται ως "rw", αλλά παράγει ένα προειδοποιητικό μήνυμα. CONVFMT Η μορφή μετατροπής για αριθμούς, "% .6g", από προεπιλογή. ΠΕΡΙΒΑΛΛΩ Ένας πίνακας που περιέχει τις τιμές του τρέχοντος περιβάλλοντος. Ο πίνακας ευρετηριάζεται από τις μεταβλητές περιβάλλοντος, όπου κάθε στοιχείο είναι η τιμή αυτής της μεταβλητής (π.χ.,ENVIRON "HOME" ίσως είναι / home / arnold). Η αλλαγή αυτής της διάταξης δεν επηρεάζει το περιβάλλον που βλέπουν τα προγράμματα τα οποία μπούφος αναπαράγεται μέσω της ανακατεύθυνσης ή του Σύστημα()λειτουργία. ERRNO Εάν εμφανιστεί ένα σφάλμα συστήματος, είτε κάντε μια ανακατεύθυνση για getline, κατά τη διάρκεια μιας ανάγνωσης για getline, ή κατά τη διάρκεια ενός Κοντά(), έπειτα ERRNO θα περιέχει μια συμβολοσειρά που περιγράφει το σφάλμα. Η τιμή υπόκειται σε μετάφραση σε μη αγγλικές τοπικές ρυθμίσεις. ΠΕΔΙΑ ΠΕΡΙΟΧΗΣ Μια λίστα με χωράφια χωρισμένη σε λευκό χώρο. Όταν έχει οριστεί, μπούφος αναλύει την είσοδο σε πεδία σταθερού πλάτους, αντί να χρησιμοποιεί την τιμή του FS μεταβλητή ως διαχωριστής πεδίου. ΟΝΟΜΑ ΑΡΧΕΙΟΥ Το όνομα του τρέχοντος αρχείου εισόδου.Εάν δεν έχουν οριστεί αρχεία στη γραμμή εντολών, η τιμή του ΟΝΟΜΑ ΑΡΧΕΙΟΥ είναι `` - ''. Ωστόσο, ΟΝΟΜΑ ΑΡΧΕΙΟΥ δεν είναι προσδιορισμένο μέσα στο ΑΡΧΙΣΕΙ (εκτός εάν έχει οριστεί από το getline). FNR Ο αριθμός εγγραφής εισόδου στο τρέχον αρχείο εισόδου. FS Ο διαχωριστής πεδίου εισαγωγής, ένας χώρος από προεπιλογή. Βλέπω Πεδία, ανωτέρω. IGNORECASE Ελέγχει την ευαισθησία σε περίπτωση όλων των λειτουργιών κανονικής έκφρασης και στοιχειοσειράς. Αν IGNORECASE έχει μια μη μηδενική τιμή, στη συνέχεια, συγκρίνει τις συμβολοσειρές και το μοτίβο αντιστοίχιση στους κανόνες, χωρισμός πεδίου με FS, η εγγραφή χωρίζεται με RS, τακτοποίηση τακτικής έκφρασης με ~και !~, και το gensub (), gsub (), δείκτης(), αγώνας(), διαίρεση(), και υπο() οι ενσωματωμένες λειτουργίες αγνοούν όλες τις περιπτώσεις όταν πραγματοποιούν πράξεις κανονικής έκφρασης. ΣΗΜΕΙΩΣΗ: Η υποδιάταξη του πίνακα είναι δεν επηρεαστεί, ούτε είναι το asort () λειτουργία. Έτσι, αν IGNORECASE δεν είναι ίσο με το μηδέν, / aB / αντιστοιχεί σε όλες τις χορδές "ab", "aB","Ab", και "AB". Όπως με όλες τις μεταβλητές AWK, η αρχική τιμή του IGNORECASE είναι μηδέν, έτσι ώστε όλες οι κανονικές εκφράσεις και οι λειτουργίες string να είναι συνήθως ευαίσθητες σε πεζά. Στο Unix, το πλήρες σύνολο χαρακτήρων ISO 8859-1 Latin-1 χρησιμοποιείται όταν αγνοείται περίπτωση. ΣΤΟΥΠΙ Παρέχει δυναμικό έλεγχο του --στουπί επιλογή από ένα πρόγραμμα AWK. Όταν είναι αλήθεια, μπούφος εκτυπώνει προειδοποιήσεις χνούδι. Όταν είναι ψευδής, δεν συμβαίνει. Όταν εκχωρείται η τιμή συμβολοσειράς "μοιραίος", οι προειδοποιήσεις για χνούδια γίνονται θανάσιμα λάθη, ακριβώς όπως --Lint = θανατηφόρο. Οποιαδήποτε άλλη αληθινή αξία τυπώνει μόνο τις προειδοποιήσεις. NF Ο αριθμός των πεδίων στην τρέχουσα εγγραφή εισόδου. NR Ο συνολικός αριθμός των εγγραφών εισόδου που φαίνονται μέχρι τώρα. OFMT Η μορφή εξόδου για αριθμούς, "% .6g", από προεπιλογή. OFS Ο διαχωριστής πεδίου εξόδου, ένας χώρος από προεπιλογή. ORS Ο διαχωριστής εγγραφών εξόδου, από προεπιλογή μια νέα γραμμή. PROCINFO Τα στοιχεία αυτής της συστοιχίας παρέχουν πρόσβαση σε πληροφορίες σχετικά με το τρέχον πρόγραμμα AWK. Σε ορισμένα συστήματα, ενδέχεται να υπάρχουν στοιχεία στη συστοιχία, "group1" διά μέσου "ομάδα n ' για ορισμένες n , που είναι ο αριθμός των συμπληρωματικών ομάδων που έχει η διαδικασία. Χρησιμοποιήστε το σε χειριστή για να ελέγξει αυτά τα στοιχεία. Τα ακόλουθα στοιχεία είναι εγγυημένα διαθέσιμα: PROCINFO "egid" η αξία του getegid (2) κλήση συστήματος. PROCINFO "euid" η αξία του geteuid (2) κλήση συστήματος. PROCINFO "FS" "FS" αν χωρίζει το πεδίο με FS είναι σε ισχύ ή "FIELDWIDTHS" αν χωρίζει το πεδίο με ΠΕΔΙΑ ΠΕΡΙΟΧΗΣ ισχύει. PROCINFO "gid" η αξία του getgid (2) κλήση συστήματος. PROCINFO "pgrpid" το αναγνωριστικό ομάδας διαδικασίας της τρέχουσας διαδικασίας. PROCINFO "pid" το αναγνωριστικό διαδικασίας της τρέχουσας διαδικασίας. PROCINFO "ppid" το αναγνωριστικό γονικής διαδικασίας της τρέχουσας διαδικασίας. PROCINFO "uid" η αξία του getuid (2) κλήση συστήματος. RS Ο διαχωριστής εγγραφών εισόδου, από προεπιλογή μια νέα γραμμή. RT Ο τερματιστής εγγραφής. Μπούφος σκηνικά RT στο κείμενο εισόδου που ταιριάζει με τον χαρακτήρα ή την κανονική έκφραση που καθορίζεται από RS. RSTART Ο δείκτης του πρώτου χαρακτήρα αντιστοιχεί στον αγώνας(). 0 αν δεν ταιριάζει. (Αυτό σημαίνει ότι οι δείκτες χαρακτήρων ξεκινούν από έναν.) RLENGTH Το μήκος της συμβολοσειράς αντιστοιχεί στο αγώνας(). -1 αν δεν ταιριάζει. SUBSEP Ο χαρακτήρας που χρησιμοποιείται για τον διαχωρισμό πολλών δεικτών σε στοιχεία συστοιχίας, από προεπιλογή ' 034'. TEXTDOMAIN Ο τομέας του κειμένου του προγράμματος AWK. χρησιμοποιείται για την εύρεση των τοπικών μεταφράσεων για τις χορδές του προγράμματος. Οι πίνακες συσχετίζονται με μια έκφραση ανάμεσα σε αγκύλες ( και ). Αν η έκφραση είναι μια λίστα εκφράσεων ( expr , expr …) τότε ο δείκτης του πίνακα είναι μια συμβολοσειρά που αποτελείται από τη συνένωση της (string) τιμής κάθε έκφρασης, διαχωρισμένη από την τιμή του SUBSEP μεταβλητός. Αυτή η διευκόλυνση χρησιμοποιείται για την προσομοίωση συστοιχιών πολλαπλών διαστάσεων. Για παράδειγμα: i = "Α". j = "Β". k = "C"x i, j, k = "γεια, κόσμος n" εκχωρεί τη συμβολοσειρά "γεια, κόσμος n" στο στοιχείο της συστοιχίας Χ που είναι ευρετηριασμένη από τη συμβολοσειρά"A 034B 034C". Όλες οι συστοιχίες στο AWK είναι συνεταιριστικές, δηλ. Αναπροσαρμόζονται με τιμές στοιχειοσειράς. Ο ειδικός χειριστής σε μπορεί να χρησιμοποιηθεί σε ένα αν ή ενώ για να δείτε εάν ένας πίνακας έχει δείκτη που αποτελείται από μια συγκεκριμένη τιμή. εάν (val in array) πίνακας εκτύπωσης val Εάν ο πίνακας έχει πολλούς δείκτες, χρησιμοποιήστε (i, j) σε πίνακα. ο σε δομή μπορεί επίσης να χρησιμοποιηθεί σε a Για loop για να επαναλάβετε όλα τα στοιχεία ενός πίνακα. Ένα στοιχείο μπορεί να διαγραφεί από μια συστοιχία χρησιμοποιώντας το διαγράφω δήλωση. ο διαγράφω μπορεί επίσης να χρησιμοποιηθεί για διαγραφή ολόκληρου του περιεχομένου ενός πίνακα, μόνο με τον καθορισμό του ονόματος πίνακα χωρίς δείκτη. Οι μεταβλητές και τα πεδία μπορεί να είναι αριθμοί (κινητής υποδιαστολής) ή σειρές ή και τα δύο. Η ερμηνεία της αξίας μιας μεταβλητής εξαρτάται από το πλαίσιο της. Αν χρησιμοποιηθεί σε μια αριθμητική έκφραση, θα θεωρηθεί ως ένας αριθμός, εάν χρησιμοποιηθεί ως συμβολοσειρά θα θεωρηθεί ως μια συμβολοσειρά. Για να αναγκάσετε μια μεταβλητή να αντιμετωπιστεί ως αριθμός, προσθέστε 0 σε αυτήν. για να την αναγκάσουμε να την αντιμετωπίσουμε ως συμβολοσειρά, να την συγκολλήσουμε με τη μηδενική σειρά. Όταν μια συμβολοσειρά πρέπει να μετατραπεί σε έναν αριθμό, η μετατροπή πραγματοποιείται χρησιμοποιώντας strtod (3). Ένας αριθμός μετατρέπεται σε μια συμβολοσειρά χρησιμοποιώντας την τιμή του CONVFMT ως συμβολοσειρά μορφής για sprintf (3), με την αριθμητική τιμή της μεταβλητής ως όρισμα. Ωστόσο, παρόλο που όλοι οι αριθμοί στο AWK είναι κυμαινόμενο σημείο, οι αναπόσπαστες τιμές είναι πάντα μετατρέπονται ως ακέραιοι αριθμοί. Έτσι, δεδομένου CONVFMT = "% 2.2f" α = 12 β = α "" τη μεταβλητή σι έχει μια τιμή συμβολοσειράς '12' και οχι '12.00'. Μπούφος πραγματοποιεί συγκρίσεις ως εξής: Εάν δύο μεταβλητές είναι αριθμητικές, συγκρίνονται αριθμητικά. Εάν μια τιμή είναι αριθμητική και η άλλη έχει μια τιμή συμβολοσειράς που είναι μια "αριθμητική συμβολοσειρά", τότε οι συγκρίσεις γίνονται επίσης αριθμητικά. Διαφορετικά, η αριθμητική τιμή μετατρέπεται σε μια συμβολοσειρά και γίνεται μια σύγκριση συμβολοσειράς. Δύο χορδές συγκρίνονται, φυσικά, με τις χορδές. Σημειώστε ότι το πρότυπο POSIX εφαρμόζει την έννοια της «αριθμητικής συμβολοσειράς» παντού, ακόμη και σε σταθερές στοιχειοσειράς. Ωστόσο, αυτό είναι σαφώς εσφαλμένο και μπούφος δεν το κάνει αυτό. (Ευτυχώς, αυτό καθορίζεται στην επόμενη έκδοση του προτύπου.) Σημειώστε ότι οι σταθερές των συμβολοσειρών, όπως '57', είναι δεν αριθμητικές χορδές, είναι σταθερές στοιχειοσειράς. Η ιδέα της `` αριθμητικής συμβολοσειράς '' ισχύει μόνο για πεδία, getline εισαγωγή, ΟΝΟΜΑ ΑΡΧΕΙΟΥ, ARGV στοιχεία, ΠΕΡΙΒΑΛΛΩ τα στοιχεία και τα στοιχεία ενός πίνακα που δημιουργήθηκε από διαίρεση() που είναι αριθμητικές χορδές. Η βασική ιδέα είναι ότι εισόδου χρήστη , και μόνο η είσοδος χρήστη, που φαίνεται αριθμητική, θα πρέπει να αντιμετωπίζεται με αυτόν τον τρόπο. Οι μη αρχικές μεταβλητές έχουν την αριθμητική τιμή 0 και την τιμή συμβολοσειράς "" (η μηδενική ή κενή συμβολοσειρά). Ξεκινώντας με την έκδοση 3.1 του gawk, μπορείτε να χρησιμοποιήσετε οκταγωνικές και δεκαεξαδικές σταθερές τύπου C στον πηγαίο κώδικα του προγράμματος AWK. Για παράδειγμα, η οκταδική τιμή 011 είναι ίσο με δεκαδικό 9, και την δεκαεξαδική τιμή 0x11 είναι ίσο με δεκαδικό 17. Οι σταθερές συμβολοσειρών στο AWK είναι ακολουθίες χαρακτήρων που περικλείονται μεταξύ διπλών εισαγωγικών ('). Μέσα σε χορδές, βέβαιοι ακολουθίες διαφυγής αναγνωρίζονται, όπως και στη Γ. Πρόκειται για: \ Μια κυριολεκτική ανάδραση. ένα Ο χαρακτήρας `` alert '' συνήθως ο χαρακτήρας ASCII BEL. σι backspace. φά φόρτωση φόρμας. n νέα γραμμή. r επιστροφή της μεταφοράς. t οριζόντια καρτέλα. v κατακόρυφη καρτέλα. Χ δεκαπέντε ψηφία Ο χαρακτήρας που παριστάνεται με τη συμβολοσειρά των δεκαεξαδικών ψηφίων που ακολουθούν το Χ. Όπως και στο ANSIC, όλα τα ακόλουθα δεκαεξαδικά ψηφία θεωρούνται μέρος της ακολουθίας διαφυγής. (Αυτό το χαρακτηριστικό θα πρέπει να μας πει κάτι για τον σχεδιασμό της γλώσσας από την επιτροπή.) Π.χ., " x1B" είναι ο χαρακτήρας ASCIIESC (διαφυγής). ddd Ο χαρακτήρας που αναπαρίσταται από την 1-, 2- ή 3-ψήφια ακολουθία των οκταγώνων. Π.χ., ' 033' είναι ο χαρακτήρας ASCII ESC (διαφυγής). ντο Ο κυριολεκτικός χαρακτήρας ντο . Οι αλληλουχίες διαφυγής μπορούν επίσης να χρησιμοποιηθούν μέσα σε σταθερές κανονικές εκφράσεις (π.χ.,/ t f n r v / αντιστοιχεί χαρακτήρες κενών διαστημάτων). Σε κατάσταση συμβατότητας, οι χαρακτήρες που αντιπροσωπεύονται από οκταετές και δεκαεξαδικές ακολουθίες διαφυγής αντιμετωπίζονται κυριολεκτικά όταν χρησιμοποιούνται σε σταθερές σταθερής έκφρασης. Ετσι, / a 52b / είναι ισοδύναμο με/ α * β /. Το AWK είναι μια γραμμική γλώσσα. Το σχέδιο έρχεται πρώτο, και στη συνέχεια η δράση. Οι δηλώσεις δράσης συνοδεύονται από το { και }. Είτε το σχέδιο μπορεί να λείπει, είτε μπορεί να λείπει η ενέργεια, αλλά, φυσικά, όχι και οι δύο. Αν το πρότυπο λείπει, η ενέργεια εκτελείται για κάθε εγγραφή εισόδου. Μια ενέργεια που λείπει είναι ισοδύναμη με { Τυπώνω } που εκτυπώνει ολόκληρη την εγγραφή. Τα σχόλια αρχίζουν με τον χαρακτήρα "#" και συνεχίζονται μέχρι το τέλος της γραμμής. Μπορείτε να χρησιμοποιήσετε κενές γραμμές για να διαχωρίσετε τις δηλώσεις. Κανονικά, μια δήλωση τελειώνει με μια νέα γραμμή, ωστόσο, αυτό δεν ισχύει για γραμμές που τελειώνουν σε ένα ``, '', {, ?, :, &&, ή ||. Γραμμές που τελειώνουν κάνω ή αλλού Επίσης, οι δηλώσεις τους συνεχίζονται αυτόματα στην ακόλουθη γραμμή. Σε άλλες περιπτώσεις, μια γραμμή μπορεί να συνεχιστεί τελειώνοντας με ένα ', οπότε η νέα γραμμή θα αγνοηθεί. Πολλαπλές δηλώσεις μπορούν να τοποθετηθούν σε μία γραμμή διαχωρίζοντάς τις με ένα ``; ''. Αυτό ισχύει τόσο για τις δηλώσεις εντός του τμήματος δράσης ενός ζεύγους μοτίβου-δράσης (η συνηθισμένη περίπτωση) όσο και για τις ίδιες τις δηλώσεις δράσης. Τα πρότυπα AWK μπορεί να είναι ένα από τα παρακάτω: ΑΡΧΙΣΕΙ ΤΕΛΟΣ / κοινή έκφραση / σχεσιακή έκφραση πρότυπο && πρότυπο πρότυπο || πρότυπο πρότυπο ? πρότυπο : πρότυπο ( πρότυπο ) ! πρότυπο pattern1 , pattern2 ΑΡΧΙΣΕΙ και ΤΕΛΟΣ είναι δύο ειδικά είδη μοτίβων τα οποία δεν ελέγχονται από την είσοδο. Τα μέρη δράσης όλων ΑΡΧΙΣΕΙ τα πρότυπα συγχωνεύονται ως εάν όλες οι δηλώσεις είχαν γραφτεί σε ένα μόνο ΑΡΧΙΣΕΙ ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Εκτελούνται πριν από την ανάγνωση οποιασδήποτε από τις εισόδους. Ομοίως, όλα τα ΤΕΛΟΣ τα μπλοκ συγχωνεύονται και εκτελούνται όταν εξαντληθεί όλη η είσοδος (ή όταν ένα έξοδος δήλωση εκτελείται). ΑΡΧΙΣΕΙ και ΤΕΛΟΣ τα μοτίβα δεν μπορούν να συνδυαστούν με άλλα μοτίβα σε εκφράσεις προτύπων. ΑΡΧΙΣΕΙ και ΤΕΛΟΣ τα μοτίβα δεν μπορούν να λείπουν από τα μέρη δράσης. Για / κοινή έκφραση / τα σχεδιαζόμενα πρότυπα εκτελούνται για κάθε εγγραφή εισόδου που ταιριάζει με την κανονική έκφραση. Οι κανονικές εκφράσεις είναι οι ίδιες με εκείνες του egrep (1), και συνοψίζονται παρακάτω. ΕΝΑ σχεσιακή έκφραση μπορεί να χρησιμοποιήσει οποιονδήποτε από τους φορείς που καθορίζονται παρακάτω στην ενότητα για τις ενέργειες. Αυτά γενικά ελέγχουν αν ορισμένα πεδία αντιστοιχούν σε ορισμένες κανονικές εκφράσεις. ο &&, ||, και ! οι χειριστές είναι λογικοί AND, λογικοί OR και λογικοί NOT, αντίστοιχα, όπως και στο C. Κάνουν εκτίμηση βραχυκυκλώματος, επίσης όπως και στο C, και χρησιμοποιούνται για να συνδυάσουν πιο πρωτόγονες εκφράσεις προτύπων. Όπως στις περισσότερες γλώσσες, οι παρενθέσεις μπορούν να χρησιμοποιηθούν για να αλλάξουν τη σειρά αξιολόγησης. ο ?: ο χειριστής είναι σαν τον ίδιο χειριστή στο C. Εάν το πρώτο μοτίβο είναι αληθινό τότε το μοτίβο που χρησιμοποιείται για τις δοκιμές είναι το δεύτερο μοτίβο, διαφορετικά είναι το τρίτο. Αποτιμάται μόνο ένα από τα δεύτερα και τρίτα πρότυπα. ο pattern1 , pattern2 μορφή έκφρασης ονομάζεται a εύρος εύρους . Αντιστοιχεί σε όλα τα αρχεία εισόδου που ξεκινούν με ένα αρχείο που ταιριάζει pattern1 , και συνεχίζοντας μέχρι ένα αρχείο που ταιριάζει pattern2 , συμπεριλαμβανομένων. Δεν συνδυάζεται με οποιαδήποτε άλλη μορφή έκφρασης μοτίβου. Οι τακτικές εκφράσεις είναι το εκτεταμένο είδος που βρέθηκε στο egrep . Αποτελούνται από χαρακτήρες ως εξής: ντο ταιριάζει με τον μη-μεταχειρίζοντα ντο . ντο αντιστοιχεί στον κυριολεκτικό χαρακτήρα ντο . . αντιστοιχεί σε οποιονδήποτε χαρακτήρα συμπεριλαμβανομένου νέα γραμμή. ^ αντιστοιχεί στην αρχή μιας συμβολοσειράς. $ αντιστοιχεί στο τέλος μιας συμβολοσειράς. αλφάβητο… λίστα χαρακτήρων, αντιστοιχεί σε οποιονδήποτε από τους χαρακτήρες αλφάβητο… . ^ αλφάβητο… αρνηθεί λίστα χαρακτήρων, αντιστοιχεί σε οποιοδήποτε χαρακτήρα εκτός από αλφάβητο… . r1 | r2 εναλλαγή: αντιστοιχεί σε δύο r1 ή r2 . r1r2 συγκόλληση: αντιστοιχίες r1 , και μετά r2 . r + αντιστοιχεί σε ένα ή περισσότερα r 'μικρό. r * ταιριάζει με μηδέν ή περισσότερο r 'μικρό. r ? αντιστοιχεί σε μηδέν ή σε ένα r 'μικρό. ( r ) ομαδοποίηση: αντιστοιχίες r . r { n } r { n ,} r { n , m } Ένας ή δύο αριθμοί μέσα σε τιράντες δηλώνουν ένα έκφραση διαστήματος . Εάν υπάρχει ένας αριθμός στα τιράντες, η προηγούμενη κανονική έκφραση r επαναλαμβάνεται n φορές. Εάν υπάρχουν δύο αριθμοί που χωρίζονται με κόμμα, r επαναλαμβάνεται n προς το m φορές. Εάν υπάρχει ένας αριθμός ακολουθούμενος από κόμμα, τότε r επαναλαμβάνεται τουλάχιστον n φορές. Οι διαδοχικές εκφράσεις είναι διαθέσιμες μόνο αν υπάρχουν --posix ή - διάστημα ορίζεται στη γραμμή εντολών. y αντιστοιχεί στην κενή συμβολοσειρά είτε στην αρχή είτε στο τέλος μιας λέξης. ΣΙ αντιστοιχεί στην κενή συμβολοσειρά μέσα σε μια λέξη. < αντιστοιχεί στην κενή συμβολοσειρά στην αρχή μιας λέξης. >
Περιγραφή
Μορφή επιλογών
Επιλογές
Μεταβλητές, αρχεία και πεδία
Εγγραφές
Πεδία
Ενσωματωμένες μεταβλητές
Array
Μεταβλητή πληκτρολόγηση και μετατροπή
Οκταγωνικά και δεκαεξαδικά στάδια
Συμβατότητα στοιχειοσειράς
Μοτίβα και Ενέργειες
Μοτίβα
Κανονικές εκφράσεις




