Awk

20 awk Beispiele

20 awk Beispiele

20 awk Beispiele

Im Linux-Betriebssystem gibt es viele Dienstprogramme zum Suchen und Erstellen eines Berichts aus Textdaten oder Dateien and. Der Benutzer kann mit den Befehlen awk, grep und sed problemlos viele Arten von Suchen, Ersetzen und Erstellen von Berichten ausführen. awk ist nicht nur ein Befehl. Es ist eine Skriptsprache, die sowohl vom Terminal als auch von der awk-Datei verwendet werden kann. Es unterstützt die Variable, bedingte Anweisung, Array, Schleifen usw. wie andere Skriptsprachen. Es kann jeden Dateiinhalt zeilenweise lesen und die Felder oder Spalten anhand eines bestimmten Trennzeichens trennen. Es unterstützt auch reguläre Ausdrücke zum Durchsuchen bestimmter Zeichenfolgen im Textinhalt oder in der Datei und führt Aktionen aus, wenn eine Übereinstimmung gefunden wird. Wie Sie awk-Befehle und -Skripte verwenden können, wird in diesem Tutorial anhand von 20 nützlichen Beispielen gezeigt.

Inhalt:

  1. awk mit printf
  2. awk, auf Leerzeichen zu teilen split
  3. awk, um das Trennzeichen zu ändern
  4. awk mit tabulatorgetrennten Daten
  5. awk mit CSV-Daten
  6. awk regex
  7. awk case insensitive regex in
  8. awk mit nf (Anzahl der Felder) Variable
  9. awk gensub()-Funktion
  10. awk mit rand() Funktion
  11. awk benutzerdefinierte Funktion
  12. ach wenn
  13. awk-Variablen
  14. awk-Arrays
  15. awk Schleife
  16. awk, um die erste Spalte zu drucken
  17. awk, um die letzte Spalte zu drucken
  18. awk mit grep
  19. awk mit der Bash-Skriptdatei
  20. awk mit sed

Verwenden von awk mit printf

printf() Funktion wird verwendet, um jede Ausgabe in den meisten Programmiersprachen zu formatieren. Diese Funktion kann verwendet werden mit awk Befehl zum Generieren verschiedener Arten von formatierten Ausgaben. awk-Befehl wird hauptsächlich für jede Textdatei verwendet. Erstellen Sie eine Textdatei mit dem Namen Mitarbeiter.TXT mit dem unten angegebenen Inhalt, wobei die Felder durch Tabulatoren ('\t') getrennt sind.

Mitarbeiter.TXT

1001 John Sena 40000
1002 Jafar Iqbal   60000
1003 Meher Nigar   30000
1004 Jonny Leber   70000

Der folgende awk-Befehl liest Daten aus Mitarbeiter.TXT Zeile für Zeile ablegen und die erste Datei nach der Formatierung drucken print. Hier, "%10s\n” bedeutet, dass die Ausgabe 10 Zeichen lang ist. Wenn der Wert der Ausgabe weniger als 10 Zeichen beträgt, werden die Leerzeichen vor dem Wert hinzugefügt.

$ awk ' printf  "%10s\n", $1 ' Mitarbeiter.TXT

Ausgabe:

Gehe zum Inhalt

awk, auf Leerzeichen zu teilen split

Der standardmäßige Wort- oder Feldtrenner zum Teilen von Text ist Leerraum. awk-Befehl kann Textwerte auf verschiedene Weise als Eingabe annehmen. Der Eingabetext wird übergeben von Echo Befehl im folgenden Beispiel. Der Text, 'Ich programmiere gerne' wird durch Standardtrennzeichen geteilt, Platz, und das dritte Wort wird als Ausgabe ausgegeben.

$ echo 'Ich programmiere gerne' | awk ' $3 drucken '

Ausgabe:

Gehe zum Inhalt

awk, um das Trennzeichen zu ändern

awk-Befehl kann verwendet werden, um das Trennzeichen für jeden Dateiinhalt zu ändern. Angenommen, Sie haben eine Textdatei namens Telefon.TXT mit folgendem Inhalt, wobei ':' als Feldtrennzeichen des Dateiinhalts verwendet wird.

Telefon.TXT

+123:334:889:778
+880:1855:456:907
+9:7777:38644:808

Führen Sie den folgenden awk-Befehl aus, um das Trennzeichen zu ändern, ':' durch '-' zum Inhalt der Datei, Telefon.TXT.

$ Katzentelefon.TXT
$ awk '$1=$1' FS=":" OFS="-" Telefon.TXT

Ausgabe:

Gehe zum Inhalt

awk mit tabulatorgetrennten Daten

Der Befehl awk hat viele eingebaute Variablen, die verwendet werden, um den Text auf unterschiedliche Weise zu lesen. Zwei davon sind FS und OFS. FS ist Eingabefeldtrennzeichen und OFS ist Ausgabefeld-Trennzeichenvariablen. Die Verwendung dieser Variablen wird in diesem Abschnitt gezeigt. Ein ... kreieren Tab getrennte Datei namens Eingang.TXT mit den folgenden Inhalten zum Testen der Verwendung von FS und OFS Variablen.

Eingang.TXT

Clientseitige   Skriptsprache
Serverseitige   Skriptsprache
Datenbankserver
Webserver

FS-Variable mit Tab verwenden

Der folgende Befehl teilt jede Zeile von Eingang.TXT Datei basierend auf der Registerkarte ('\t') und drucken Sie das erste Feld jeder Zeile.

$ awk ' print $1 ' FS='\t' Eingabe.TXT

Ausgabe:

OFS-Variable mit Tab verwenden

Der folgende awk-Befehl druckt die 9das und 5das Felder von 'Is-l' Befehlsausgabe mit Tabulatortrennzeichen nach Drucken des Spaltentitels „Name" und "Größe”. Hier, OFS Variable wird verwendet, um die Ausgabe durch eine Registerkarte zu formatieren.

$ ls -l
$ ls -l | awk -v OFS='\t' 'BEGIN printf "%s\t%s\n", "Name", "Größe" print $9,$5'

Ausgabe:

Gehe zum Inhalt

awk mit CSV-Daten

Der Inhalt jeder CSV-Datei kann mit dem Befehl awk auf verschiedene Weise geparst werden. Erstellen Sie eine CSV-Datei mit dem Namen 'Kunde.csv'  mit dem folgenden Inhalt, um den Befehl awk anzuwenden.

Kunde.TXT

ID, Name, E-Mail, Telefon
1, Sophia, [email protected], (862) 478-7263
2, Amelia, [email protected], (530) 764-8000
3, Emma, ​​[email protected], (542) 986-2390

Einzelnes Feld der CSV-Datei lesen

'-F' Option wird mit dem Befehl awk verwendet, um das Trennzeichen für die Aufteilung jeder Zeile der Datei festzulegen set. Der folgende awk-Befehl druckt die Name Bereich der Kunde.csv Datei.

$ Katzenkunde.csv
$ awk -F "," 'print $2' Kunde.csv

Ausgabe:

Lesen mehrerer Felder durch Kombination mit anderem Text

Der folgende Befehl druckt drei Felder von Kunde.csv durch Kombinieren von Titeltext, Name, E-Mail und Telefon. Die erste Zeile des Kunde.csv Datei enthält den Titel jedes Feldes. NR Variable enthält die Zeilennummer der Datei, wenn der Befehl awk die Datei analysiert. In diesem Beispiel, die NR Variable wird verwendet, um die erste Zeile der Datei auszulassen. Die Ausgabe zeigt die 2nd, 3rd und 4das Felder aller Zeilen außer der ersten Zeile.

$ awk  -F "," 'NR>1 print "Name:" $2 ", E-Mail:" $3 ", Telefon:" $4' Kunde.csv

Ausgabe:

CSV-Datei mit einem awk-Skript lesen

awk-Skript kann durch Ausführen der awk-Datei ausgeführt werden. Wie Sie eine awk-Datei erstellen und die Datei ausführen können, wird in diesem Beispiel gezeigt. Erstellen Sie eine Datei mit dem Namen awkcsv.awk mit folgendem Code. START Schlüsselwort wird im Skript verwendet, um den Befehl awk zu informieren, um das Skript des START Teil zuerst, bevor andere Aufgaben ausgeführt werden. Hier Feldtrennzeichen (FS) wird verwendet, um das Trennzeichen und 2 define zu definierennd und 1st Felder werden gemäß dem Format gedruckt, das in der Funktion printf() verwendet wird.

awkcsv.awk
BEGIN FS = "," printf "%5s(%s)\n", $2,$1

Lauf awkcsv.awk Datei mit dem Inhalt von der Kunde.csv Datei mit dem folgenden Befehl.

$ awk -f awkcsv.awk Kunde.csv

Ausgabe:

Gehe zum Inhalt

awk regex

Der reguläre Ausdruck ist ein Muster, das verwendet wird, um eine beliebige Zeichenfolge in einem Text zu durchsuchen. Verschiedene Arten von komplizierten Suchen- und Ersetzen-Aufgaben können sehr einfach mit dem regulären Ausdruck durchgeführt werden. In diesem Abschnitt werden einige einfache Anwendungen des regulären Ausdrucks mit dem Befehl awk gezeigt shown.

Passender Zeichensatz

Der folgende Befehl entspricht dem Wort Narr oder Bool oder Cool mit der Eingabezeichenfolge und drucken, wenn das Wort gefunden wird. Hier, Puppe passt nicht und wird nicht gedruckt.

$ printf "Narr\nCool\nPuppe\nbool" | awk '/[FbC]ool/'

Ausgabe:

Suchstring am Zeilenanfang

'^' Symbol wird im regulären Ausdruck verwendet, um ein beliebiges Muster am Anfang der Zeile zu suchen. 'Linux' Im folgenden Beispiel wird am Anfang jeder Textzeile nach einem Wort gesucht. Hier beginnen zwei Zeilen mit dem Text, "Linux"' und diese beiden Zeilen werden in der Ausgabe angezeigt.

$ echo -e "Linux kann kostenlos verwendet werden\n Es ist eine Open-Source-Software\nLinuxHint ist
eine beliebte Blog-Site" | awk '/^Linux/'

Ausgabe:

Suchstring am Ende der Zeile

'$' Symbol wird im regulären Ausdruck verwendet, um ein beliebiges Muster am Ende jeder Textzeile zu suchen. 'Skript' Wort wird im folgenden Beispiel gesucht. Hier enthalten zwei Zeilen das Wort, Skript am Ende der Zeile.

$ echo -e "PHP-Skript\nJavaScript\nVisuelle Programmierung" | awk '/Skript$/'

Ausgabe:

Suche durch Auslassen eines bestimmten Zeichensatzes

'^' Symbol zeigt den Anfang des Textes an, wenn es vor einem beliebigen Zeichenfolgenmuster verwendet wird ('/^… /') oder vor einem von declared deklarierten Zeichensatz ^[…]. Wenn die '^' Symbol in der dritten Klammer verwendet wird, [^… ]  dann wird der definierte Zeichensatz in der Klammer bei der Suche weggelassen. Der folgende Befehl sucht jedes Wort, das nicht mit . beginnt 'F' aber endend mit 'ool'. Cool und bool wird entsprechend den Muster- und Textdaten gedruckt.

$ printf "Narr\nCool\nPuppe\nbool" | awk '/[^F]ool/'

Ausgabe:

Gehe zum Inhalt

awk case insensitive regex in

Standardmäßig führt der reguläre Ausdruck bei der Suche nach einem Muster in der Zeichenfolge die Groß-/Kleinschreibung durch. Die Suche ohne Berücksichtigung der Groß-/Kleinschreibung kann mit dem Befehl awk mit dem regulären Ausdruck durchgeführt werden. Im folgenden Beispiel, zu senken() Die Funktion wird verwendet, um die Groß-/Kleinschreibung zu berücksichtigen. Hier wird das erste Wort jeder Zeile des Eingabetextes mit lower in Kleinbuchstaben umgewandelt zu senken() Funktion und Übereinstimmung mit dem Muster des regulären Ausdrucks. toupper() Funktion kann auch für diesen Zweck verwendet werden, in diesem Fall muss das Muster durch alle Großbuchstaben definiert werden. Der im folgenden Beispiel definierte Text enthält das Suchwort, 'Netz' in zwei Zeilen, die als Ausgabe ausgegeben werden.

$ echo -e "Webdesign\nWebentwicklung\nFramework" | awk 'tolower($0) ~ /^web/;'

Ausgabe:

Gehe zum Inhalt

awk mit NF-Variable (Anzahl der Felder)

NF ist eine eingebaute Variable des awk-Befehls, die verwendet wird, um die Gesamtzahl der Felder in jeder Zeile des Eingabetextes zu zählen. Erstellen Sie eine beliebige Textdatei mit mehreren Zeilen und mehreren Wörtern. die Eingabe.TXT Hier wird die Datei verwendet, die im vorherigen Beispiel erstellt wurde.

Verwenden von NF über die Befehlszeile

Hier wird der erste Befehl verwendet, um den Inhalt von . anzuzeigen Eingang.TXT file und der zweite Befehl wird verwendet, um die Gesamtzahl der Felder in jeder Zeile der Datei anzuzeigen, indem . verwendet wird NF Variable.

$ Katzeneingabe.TXT
$ awk 'print NF'-Eingabe.TXT

Ausgabe:

Verwenden von NF in einer awk-Datei

Erstellen Sie eine awk-Datei mit dem Namen Anzahl.awk mit dem unten angegebenen Skript. Wenn dieses Skript mit beliebigen Textdaten ausgeführt wird, wird jeder Zeileninhalt mit den Gesamtfeldern als Ausgabe ausgegeben.

Anzahl.awk

$0 drucken
print "[Gesamtfelder:" NF "]"

Führen Sie das Skript mit dem folgenden Befehl aus.

$ awk -f count.awk Eingang.TXT

Ausgabe:

Gehe zum Inhalt

awk gensub()-Funktion

getsub() ist eine Ersetzungsfunktion, die verwendet wird, um Zeichenfolgen basierend auf bestimmten Trennzeichen oder Mustern für reguläre Ausdrücke zu suchen. Diese Funktion ist definiert in  'gaffen' Paket, das nicht standardmäßig installiert ist. Die Syntax für diese Funktion ist unten angegeben. Der erste Parameter enthält das Muster des regulären Ausdrucks oder das Suchtrennzeichen, der zweite Parameter enthält den Ersetzungstext, der dritte Parameter gibt an, wie die Suche durchgeführt wird und der letzte Parameter enthält den Text, in dem diese Funktion angewendet wird.

Syntax:

gensub(regexp, Ersetzung, wie [, Ziel])

Führen Sie den folgenden Befehl aus, um zu installieren gaffen Paket für die Verwendung getsub() Funktion mit awk-Befehl.

$ sudo apt-get install gawk

Erstellen Sie eine Textdatei mit dem Namen 'Verkaufsinfo.TXT' mit folgendem Inhalt, um dieses Beispiel zu üben. Hier sind die Felder durch einen Tab getrennt.

Verkaufsinfo.TXT

Mo  700000
Di       800000
Mi 750000
Do       200000
Fr  430000
Sa  820000

Führen Sie den folgenden Befehl aus, um die numerischen Felder der zu lesen Verkaufsinfo.TXT die Summe aller Verkaufsbeträge ablegen und ausdrucken. Hier gibt der dritte Parameter 'G' die globale Suche an. Das bedeutet, dass das Muster im gesamten Inhalt der Datei durchsucht wird.

$ awk ' x=gensub("\t","","G",$2); printf x "+" END print 0 ' salesinfo.txt | bc -l

Ausgabe:

Gehe zum Inhalt

awk mit rand() Funktion

Rand() -Funktion wird verwendet, um eine beliebige Zufallszahl größer als 0 und kleiner als 1 zu generieren. Es wird also immer eine Bruchzahl kleiner als 1 . erzeugt. Der folgende Befehl generiert eine gebrochene Zufallszahl und multipliziert den Wert mit 10, um eine Zahl von mehr als 1 zu erhalten. Für die Anwendung der Funktion printf() wird eine Bruchzahl mit zwei Nachkommastellen ausgegeben. Wenn Sie den folgenden Befehl mehrmals ausführen, erhalten Sie jedes Mal eine andere Ausgabe.

$ awk 'BEGIN printf "Zahl ist =%.2f\n", rand()*10'

Ausgabe:

Gehe zum Inhalt

awk benutzerdefinierte Funktion

Alle in den vorherigen Beispielen verwendeten Funktionen sind eingebaute Funktionen. Sie können jedoch in Ihrem awk-Skript eine benutzerdefinierte Funktion deklarieren, um eine bestimmte Aufgabe auszuführen.  Angenommen, Sie möchten eine benutzerdefinierte Funktion erstellen, um die Fläche eines Rechtecks ​​zu berechnen. Erstellen Sie für diese Aufgabe eine Datei mit dem Namen 'Bereich.awk' mit folgendem Skript. In diesem Beispiel ist eine benutzerdefinierte Funktion namens Bereich() wird im Skript deklariert, das die Fläche anhand der Eingabeparameter berechnet und den Flächenwert zurückgibt returns. Getline Befehl wird hier verwendet, um Eingaben vom Benutzer entgegenzunehmen.

Bereich.awk

# Fläche berechnen
Funktionsfläche (Höhe, Breite)
Rückgabehöhe*Breite

# Startet die Ausführung
START
print "Geben Sie den Höhenwert ein:"
getline h < "-"
print "Geben Sie den Breitenwert ein:"
getline w < "-"
print "Fläche = " Fläche(h,w)

Führen Sie das Skript aus.

$ awk -f Bereich.awk

Ausgabe:

Gehe zum Inhalt

awk wenn beispiel

awk unterstützt bedingte Anweisungen wie andere Standardprogrammiersprachen. In diesem Abschnitt werden drei Arten von if-Anweisungen anhand von drei Beispielen gezeigt. Erstellen Sie eine Textdatei mit dem Namen Artikel.TXT mit folgendem Inhalt.

Artikel.TXT

HDD  Samsung   100 $
Maus  A4Tech
Drucker   HP   200 $

Einfaches wenn Beispiel:

Der folgende Befehl liest den Inhalt der Artikel.TXT Datei und überprüfen Sie die 3rd Feldwert in jeder Zeile. Wenn der Wert leer ist, wird eine Fehlermeldung mit der Zeilennummer ausgegeben.

$ awk ' if ($3 == "") print "Preisfeld fehlt in Zeile " NR '  Artikel.TXT

Ausgabe:

if-else-Beispiel:

Der folgende Befehl druckt den Artikelpreis, wenn die 3rd Feld in der Zeile vorhanden ist, andernfalls wird eine Fehlermeldung ausgegeben.

$ awk ' if ($3 == "") print "Preisfeld fehlt"
Sonst drucke "Artikelpreis ist " 3 $ ' Artikel.TXT

Ausgabe:

if-else-if Beispiel:

Wenn der folgende Befehl vom Terminal ausgeführt wird, wird er vom Benutzer eingegeben. Der Eingabewert wird mit jeder if-Bedingung verglichen, bis die Bedingung wahr ist. Wenn eine Bedingung wahr wird, wird die entsprechende Note gedruckt. Wenn der Eingabewert keiner Bedingung entspricht, wird die Ausgabe fehlgeschlagen.

$ awk 'BEGIN print "Geben Sie das Zeichen ein:"
Getline-Marke <  "-"
if (Markierung >= 90) drucke "A+"
else if( mark >= 80) drucke "A"
else if( mark >= 70) drucke "B+"
sonst "Fehler" ausgeben '

Ausgabe:

Gehe zum Inhalt

awk-Variablen

Die Deklaration der awk-Variablen ähnelt der Deklaration der Shell-Variablen. Es gibt einen Unterschied beim Lesen des Wertes der Variablen. Das '$'-Symbol wird mit dem Variablennamen für die Shell-Variable verwendet, um den Wert zu lesen. Es ist jedoch nicht erforderlich, '$' mit awk-Variable zu verwenden, um den Wert zu lesen.

Einfache Variable verwenden:

Der folgende Befehl deklariert eine Variable namens 'Seite? ˅' und dieser Variablen wird ein String-Wert zugewiesen. Der Wert der Variablen wird in der nächsten Anweisung ausgegeben.

$ awk 'BEGINNEN site="LinuxHint.com"; Seite drucken'

Ausgabe:

Verwenden einer Variablen zum Abrufen von Daten aus einer Datei

Der folgende Befehl sucht nach dem Wort 'Drucker' in der Datei Artikel.TXT. Wenn eine Zeile der Datei mit beginnt 'Drucker' dann wird der Wert von gespeichert 1st, 2nd und 3rd Felder in drei Variablen. Name und Preis Variablen werden gedruckt.

$ awk '/Printer/ name=$1;brand=$2;price=$3;print "Artikelname=" Name;
Drucken Sie "Artikelpreis=" Preis ' Artikel.TXT

Ausgabe:

Gehe zum Inhalt

awk-Arrays

In awk . können sowohl numerische als auch zugehörige Arrays verwendet werden. Die Deklaration von Array-Variablen in awk ist mit anderen Programmiersprachen identisch. Einige Verwendungen von Arrays werden in diesem Abschnitt gezeigt.

Assoziatives Array: 

Der Index des Arrays ist ein beliebiger String für das assoziative Array.  In diesem Beispiel wird ein assoziatives Array aus drei Elementen deklariert und gedruckt.

$ awk 'BEGINNEN
books["Webdesign"] = "HTML 5 lernen";
books["Webprogrammierung"] = "PHP und MySQL"
Bücher["PHP Framework"]="Laravel 5 lernen"
printf "%s\n%s\n%s\n", books["Webdesign"],books["Webprogrammierung"],
Bücher["PHP-Framework"] '

Ausgabe:

Numerisches Array:

Ein numerisches Array von drei Elementen wird deklariert und durch Trennen von Tabs gedruckt.

$ awk 'BEGINNEN
Zahl[0] = 80;
Zahl[1] = 55;
Zahl[2] = 76;

# Array-Elemente drucken
printf  "Array-Werte: %d\t%d\t%d\n", number[0],number[1],number[2]; '

Ausgabe:

Gehe zum Inhalt

awk Schleife

Drei Arten von Loops werden von awk . unterstützt. Die Verwendung dieser Schleifen wird hier anhand von drei Beispielen gezeigt shown.

While-Schleife:

Die while-Schleife, die im folgenden Befehl verwendet wird, wird 5 Mal durchlaufen und die Schleife für die Break-Anweisung verlassen.

$  awk 'BEGIN n = 1; während (n <= 10) if(n > 5) Pause; drucken n; n++ '

Ausgabe:

Für Schleife:

Die For-Schleife, die im folgenden awk-Befehl verwendet wird, berechnet die Summe von 1 bis 10 und gibt den Wert aus.

$ awk 'BEGIN Summe=0; für (n = 1; n <= 10; n++) sum=sum+n; print sum '

Ausgabe:

Do-while-Schleife:

eine do-while-Schleife des folgenden Befehls druckt alle geraden Zahlen von 10 bis 5.

$ awk 'BEGIN Zähler = 10; do if (counter%2 ==0) Zähler drucken; Zähler--
while (Zähler > 5) '

Ausgabe:

Gehe zum Inhalt

awk, um die erste Spalte zu drucken

Die erste Spalte jeder Datei kann mit der Variablen $1 in awk gedruckt werden. Wenn der Wert der ersten Spalte jedoch mehrere Wörter enthält, wird nur das erste Wort der ersten Spalte gedruckt. Durch die Verwendung eines bestimmten Trennzeichens kann die erste Spalte richtig gedruckt werden. Erstellen Sie eine Textdatei mit dem Namen Studenten.TXT mit folgendem Inhalt. Hier enthält die erste Spalte den Text von zwei Wörtern.

Studenten.TXT

Kaniz Fatema       30das Stapel
Abir Hossain       35das Stapel
John Abraham       40das Stapel

Führen Sie den Befehl awk ohne Trennzeichen aus. Der erste Teil der ersten Spalte wird gedruckt.

$ awk 'print $1' Schüler.TXT

Führen Sie den Befehl awk mit dem folgenden Trennzeichen aus. Der gesamte Teil der ersten Spalte wird gedruckt.

$ awk -F '\\s\\s' 'print $1' Schüler.TXT

Ausgabe:

Gehe zum Inhalt

awk, um die letzte Spalte zu drucken

$(NF) Variable kann verwendet werden, um die letzte Spalte einer beliebigen Datei zu drucken. Die folgenden awk-Befehle drucken den letzten Teil und den vollständigen Teil der letzten Spalte von die Studenten.TXT Datei.

$ awk 'print $(NF)' Schüler.TXT
$ awk -F '\\s\\s' 'print $(NF)' Schüler.TXT

Ausgabe:

Gehe zum Inhalt

awk mit grep

grep ist ein weiterer nützlicher Befehl von Linux, um Inhalte in einer Datei basierend auf einem beliebigen regulären Ausdruck zu durchsuchen. Wie die Befehle awk und grep zusammen verwendet werden können, zeigt das folgende Beispiel. grep Befehl wird verwendet, um Informationen zur Mitarbeiter-ID zu suchen, '1002' von der Mitarbeiter.TXT Datei. Die Ausgabe des grep-Befehls wird als Eingabedaten an awk gesendet. 5% Bonus wird basierend auf dem Gehalt des Mitarbeiterausweises gezählt und gedruckt1002' per awk-Befehl.

$ Katzenangestellter.TXT
$ grep '1002' Mitarbeiter.txt | awk -F '\t' ' print $2 " erhält $" ($3*5)/100 " Bonus"'

Ausgabe:

Gehe zum Inhalt

awk mit BASH-Datei

Wie andere Linux-Befehle kann auch der awk-Befehl in einem BASH-Skript verwendet werden. Erstellen Sie eine Textdatei mit dem Namen Kunden.TXT mit folgendem Inhalt. Jede Zeile dieser Datei enthält Informationen zu vier Feldern. Dies sind Kundennummer, Name, Adresse und Handynummer, die durch separated getrennt sind '/'.

Kunden.TXT

AL4934 / Charles M. Brunner / 4838  Beeghley Street, Huntsville, Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930  Bassel Street, VALLECITO, Kalifornien / 415-679-5908
IL4855 / Ann A Neale / 1932  Patterson Fork Road, Chicago, Illinois / 773-550-5107

Erstellen Sie eine Bash-Datei mit dem Namen item_search.bash mit folgendem Skript. Gemäß diesem Skript wird der Zustandswert vom Benutzer übernommen und in gesucht Die Kunden.TXT Datei von grep Befehl und als Eingabe an den awk-Befehl übergeben. Awk-Befehl wird gelesen 2nd und 4das Felder jeder Zeile. Wenn der Eingabewert mit einem Zustandswert von übereinstimmt Kunden.TXT Datei dann druckt es die des Kunden customer Name und Handynummer, Andernfalls wird die Meldung „Kein Kunde gefunden”.

item_search.bash

#!/bin/bash
echo "Geben Sie den Statusnamen ein:"
Status lesen
Kunden='grep "$state" Kunden.txt | awk -F "/" 'print "Kundenname:" $2, ",
Handynummer:" $4''
if [ "$Kunden" != "" ]; dann
echo $kunden
sonst
echo "Kein Kunde gefunden"
fi

Führen Sie die folgenden Befehle aus, um die Ausgaben anzuzeigen.

$ Katzenkunden.TXT
$ bash item_search.bash

Ausgabe:

Gehe zum Inhalt

awk mit sed

Ein weiteres nützliches Suchwerkzeug von Linux ist sed. Dieser Befehl kann sowohl zum Suchen als auch zum Ersetzen von Text einer beliebigen Datei verwendet werden. Das folgende Beispiel zeigt die Verwendung des Befehls awk mit sed Befehl. Hier durchsucht der Befehl sed alle Mitarbeiternamen, die mit ' beginnenJ' und wird als Eingabe an den Befehl awk übergeben. awk druckt Mitarbeiter Name und ICH WÜRDE nach der Formatierung.

$ Katzenangestellter.TXT
$ sed -n '/J/p' Mitarbeiter.txt | awk -F '\t' ' printf "%s(%s)\n", $2, $1 '

Ausgabe:

Gehe zum Inhalt

Fazit:

Sie können den Befehl awk verwenden, um verschiedene Arten von Berichten basierend auf tabellarischen oder durch Trennzeichen getrennten Daten zu erstellen, nachdem Sie die Daten richtig gefiltert haben. Ich hoffe, Sie können lernen, wie der Befehl awk funktioniert, nachdem Sie die Beispiele in diesem Tutorial geübt haben.

So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...
Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...