Πώς να εκτυπώσετε μια σειρά στηλών χρησιμοποιώντας την εντολή `awk`

How Print Range Columns Using Awk Command



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

Παράδειγμα 1: Εκτυπώστε μια σειρά στηλών από μια έξοδο εντολών

Η ακόλουθη εντολή θα εκτυπώσει τη δεύτερη, την τρίτη και την τέταρτη στήλη από την έξοδο εντολών, ‘Ls -l ‘. Εδώ, οι αριθμοί των στηλών αναφέρονται ρητά, αλλά μια πιο αποτελεσματική εντολή για την εκτύπωση του ίδιου εύρους στηλών φαίνεται στο επόμενο παράδειγμα.







$ls -ο | awk '{print $ 2, $ 3, $ 4}'

Η ακόλουθη έξοδος παράγεται με την παραπάνω εντολή.





Παράδειγμα 2: Εκτυπώστε το εύρος των στηλών από ένα αρχείο χρησιμοποιώντας ένα Για βρόχος

Για να ακολουθήσετε αυτό το παράδειγμα και τα άλλα παραδείγματα σε αυτό το σεμινάριο, δημιουργήστε ένα αρχείο κειμένου με όνομα σημάδια.txt με το ακόλουθο περιεχόμενο :





Αναγνωριστικό CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Η ακόλουθη εντολή `awk` θα εκτυπώσει τις τρεις πρώτες στήλες σημάτων.txt. ο Για Ο βρόχος χρησιμοποιείται για την εκτύπωση των τιμών της στήλης και ο βρόχος περιλαμβάνει τρία βήματα. ο NF μεταβλητή υποδεικνύει το συνολικό αριθμό πεδίων ή στηλών του αρχείου.

$Γάτασημάδια.txt
$awk '{για (i = 1; i<=NF-1;i++) printf $i' '; print ''}'σημάδια.txt

Η ακόλουθη έξοδος θα παραχθεί εκτελώντας την εντολή. Η έξοδος δείχνει τον μαθητή Ταυτότητες και τα σημάδια για CSE203 και CSE102 Το



Παράδειγμα 3: Εκτυπώστε το εύρος των στηλών καθορίζοντας μεταβλητές έναρξης και λήξης

Η ακόλουθη εντολή `awk` θα εκτυπώσει τις τρεις πρώτες στήλες από την έξοδο εντολών 'ls -l' αρχικοποιώντας το εκκίνηση και κατάληξη μεταβλητές. Εδώ, η αξία του εκκίνηση η μεταβλητή είναι 1 και η τιμή του κατάληξη η μεταβλητή είναι 3. Αυτές οι μεταβλητές επαναλαμβάνονται σε έναν βρόχο for για να εκτυπώσουν τις τιμές της στήλης.

$ls -ο | awk 'BEGIN {first = 1; τελευταίο = 3}
{για (i = πρώτο · i

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση της εντολής. Η έξοδος εμφανίζει τις τρεις πρώτες τιμές στήλης της εξόδου, 'ls -l'.

Παράδειγμα 4: Εκτυπώστε μια σειρά στηλών από ένα αρχείο με μορφοποίηση

Η ακόλουθη εντολή `awk` θα εκτυπώσει τις τρεις πρώτες στήλες του σημάδια.txt χρησιμοποιώντας printf και διαχωριστικό πεδίου εξόδου ( OFS ). Εδώ, ο βρόχος for περιλαμβάνει τρία βήματα και τρεις στήλες θα εκτυπωθούν με τη σειρά από το αρχείο. OFS χρησιμοποιείται εδώ για να προσθέσετε χώρο μεταξύ των στηλών. Όταν η αντίθετη τιμή του βρόχου (i) ισούται με το κατάληξη μεταβλητή, τότε δημιουργείται μια νέα γραμμή ( n).

$Γάτασημάδια.txt
$awk αρχή=1 τέλος=3 '{για (i = έναρξη · i<=end;i++) printf('%s%s',
$ i, (i == τέλος); ' n': OFS)} '
σημάδια.txt

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

Παράδειγμα 5: Εκτυπώστε το εύρος των στηλών από ένα αρχείο χρησιμοποιώντας μια δήλωση υπό όρους

Η ακόλουθη εντολή `awk` θα εκτυπώσει την πρώτη και την τελευταία στήλη από ένα αρχείο χρησιμοποιώντας ένα βρόχο for και μια πρόταση if. Εδώ, ο βρόχος for περιλαμβάνει τέσσερα βήματα. ο εκκίνηση και κατάληξη Οι μεταβλητές χρησιμοποιούνται στο σενάριο για να παραλείψουν τη δεύτερη και την τρίτη στήλη από το αρχείο χρησιμοποιώντας τη συνθήκη if. Η μεταβλητή OFS χρησιμοποιείται για την προσθήκη χώρου μεταξύ των στηλών και η μεταβλητή ORS χρησιμοποιείται για την προσθήκη μιας νέας γραμμής ( n) μετά την εκτύπωση της τελευταίας στήλης.

$Γάτασημάδια.txt
$awk αρχή=2 τέλος=3 '{για (i = 1; i<=NF;i++)
εάν (i> = έναρξη && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
σημάδια.txt

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση των παραπάνω εντολών. Η έξοδος εμφανίζει την πρώτη και τελευταία στήλη σημάτων.txt.

Παράδειγμα 6: Εκτυπώστε το εύρος των στηλών από ένα αρχείο χρησιμοποιώντας τη μεταβλητή NF

Η ακόλουθη εντολή `awk` θα εκτυπώσει την πρώτη και την τελευταία στήλη από το αρχείο χρησιμοποιώντας μια μεταβλητή NF. Δεν χρησιμοποιούνται βρόχοι ή προτάσεις υπό όρους για την εκτύπωση των τιμών της στήλης. Το NF υποδεικνύει τον αριθμό των πεδίων. Υπάρχουν τέσσερις στήλες στο marks.txt. $ (NF-3) ορίζει την πρώτη στήλη και $ NF την τελευταία στήλη.

$Γάτασημάδια.txt
$awk '{print $ (NF-3)' '$ NF}'σημάδια.txt

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

Παράδειγμα 7: Εκτυπώστε το εύρος των στηλών από ένα αρχείο χρησιμοποιώντας το substr () και το index ()

Η συνάρτηση index () επιστρέφει μια θέση εάν η δεύτερη τιμή ορίσματος υπάρχει στην πρώτη τιμή ορίσματος. Η συνάρτηση substr () μπορεί να λάβει τρία ορίσματα. Το πρώτο όρισμα είναι μια τιμή συμβολοσειράς, το δεύτερο όρισμα είναι η αρχική θέση και το τρίτο όρισμα είναι το μήκος. Το τρίτο όρισμα του substr () παραλείπεται στην ακόλουθη εντολή. Επειδή η στήλη ξεκινά από $ 1 στην εντολή `awk`, η συνάρτηση index () θα επιστρέψει $ 3 και η εντολή θα εκτυπωθεί από $ 3 έως $ 4.

$Γάτασημάδια.txt
$awk '{print substr ($ 0, index ($ 0, $ 3))}}σημάδια.txt

Η ακόλουθη έξοδος θα παραχθεί εκτελώντας τις παραπάνω εντολές.

Παράδειγμα 8: Εκτυπώστε διαδοχικά μια σειρά στηλών από ένα αρχείο χρησιμοποιώντας printf

Η ακόλουθη εντολή `awk` θα εκτυπώσει την πρώτη, δεύτερη και τρίτη στήλη σημάτων. Txt, ορίζοντας αρκετό χώρο για 10 χαρακτήρες.

$Γάτασημάδια.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'σημάδια.txt

Η ακόλουθη έξοδος θα παραχθεί εκτελώντας τις παραπάνω εντολές.

συμπέρασμα

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