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:
- awk mit printf
- awk, auf Leerzeichen zu teilen split
- awk, um das Trennzeichen zu ändern
- awk mit tabulatorgetrennten Daten
- awk mit CSV-Daten
- awk regex
- awk case insensitive regex in
- awk mit nf (Anzahl der Felder) Variable
- awk gensub()-Funktion
- awk mit rand() Funktion
- awk benutzerdefinierte Funktion
- ach wenn
- awk-Variablen
- awk-Arrays
- awk Schleife
- awk, um die erste Spalte zu drucken
- awk, um die letzte Spalte zu drucken
- awk mit grep
- awk mit der Bash-Skriptdatei
- 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 400001002 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.TXTAusgabe:
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 SkriptspracheServerseitige 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.TXTAusgabe:
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, Telefon1, 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.csvAusgabe:
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.awkBEGIN 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.csvAusgabe:
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 ZeichensatzDer 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 isteine 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 druckenprint "[Gesamtfelder:" NF "]"
Führen Sie das Skript mit dem folgenden Befehl aus.
$ awk -f count.awk Eingang.TXTAusgabe:
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 gawkErstellen 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 700000Di 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 -lAusgabe:
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 berechnenFunktionsflä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.awkAusgabe:
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.TXTAusgabe:
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 'BEGINNENbooks["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 'BEGINNENZahl[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 StapelAbir 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.TXTFü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.TXTAusgabe:
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-7942CA5455 / 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/bashecho "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.