Top 10 awk Beispiele

Top 10 awk Beispiele

20 awk Beispiele

Im Linux -Betriebssystem gibt es viele Dienstprogramm -Tools, um einen Bericht aus Textdaten oder Datei zu suchen und zu generieren. Der Benutzer kann problemlos viele Arten von Such-, Ersetzen und Berichtsgenerierung von Aufgaben mithilfe von awk-, grep- und SED -Befehlen ausführen. awk ist nicht nur ein Befehl. Es handelt sich um eine Skriptsprache, die sowohl aus der Terminal- als auch in awk -Datei verwendet werden kann. Es unterstützt die Variable, die bedingte Anweisung, das Array, die Schleifen usw. Wie andere Skriptsprachen. Es kann eine beliebige Dateiinhaltszeile nach Zeile lesen und die Felder oder Spalten basierend auf einem bestimmten Trennzeichen trennen. Es unterstützt auch den regelmäßigen Ausdruck für die Suche nach einer bestimmten Zeichenfolge im Textinhalt oder in der Datei und ergriffen Aktionen, falls eine Übereinstimmung gefunden wird. Wie Sie awk den Befehl und das Skript verwenden können, wird in diesem Tutorial unter Verwendung von 20 nützlichen Beispielen angezeigt.

Inhalt:

  1. awk mit printf
  2. awk, um den weißen Raum aufzuteilen
  3. awk, um den Trennzeichen zu ändern
  4. awk mit tabinimitierten Daten
  5. awk mit CSV -Daten
  6. awk regex
  7. awk case unempfindlich regex
  8. awk mit NF (Anzahl der Felder) Variable
  9. awk GENSUB () -Funktion
  10. awk mit Rand () Funktion
  11. awk Benutzer definierter Funktion
  12. awk wenn
  13. awk Variablen
  14. awk Arrays
  15. awk Loop
  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 Sie awk mit printf

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

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 Dateizeile nach Zeile und drucken Sie die erste nach der Formatierung eingereichte Zeile. 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 an der Vorderseite des Wertes hinzugefügt.

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

Ausgang:

Gehen Sie zu Inhalt

awk, um den weißen Raum aufzuteilen

Das Standardwort oder Feldabscheider für die Aufteilung eines Textes ist der Weißraum. Der Befehl awk kann den Textwert als Eingabe auf verschiedene Arten nehmen. Der Eingangstext wird von übergeben Echo Befehl im folgenden Beispiel. Der Text, 'Ich mag programmieren'wird standardmäßig aufgeteilt, Raum, und das dritte Wort wird als Ausgabe gedruckt.

$ echo 'Ich mag programmieren' | awk 'print $ 3'

Ausgang:

Gehen Sie zu Inhalt

awk, um den Trennzeichen zu ändern

Der Befehl awk kann verwendet werden, um den Trennzeichen für jeden Dateiinhalt zu ändern. Angenommen, Sie haben eine Textdatei mit dem Namen Telefon.txt Mit dem folgenden Inhalt, wo ':' als Feldabscheider 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 den Trennzeichen zu ändern, ':' von '-' ' zum Inhalt der Datei, Telefon.txt.

$ Cat Telefon.txt
$ awk '$ 1 = $ 1' fs = ":" ofs = "-" Telefon.txt

Ausgang:

Gehen Sie zu Inhalt

awk mit tabinimitierten Daten

Der Befehl awk enthält viele integrierte Variablen, mit denen der Text auf unterschiedliche Weise gelesen wird. Zwei von ihnen sind Fs Und Ofs. Fs ist Eingangsfeldabscheider und Ofs ist Ausgangsfeldabscheidervariablen. Die Verwendungen dieser Variablen werden in diesem Abschnitt angezeigt. Ein ... kreieren Tab getrennte Datei benannt Eingang.txt mit dem folgenden Inhalt, um die Verwendung von zu testen Fs Und Ofs Variablen.

Eingang.txt

Client-Seite-Skriptsprache
Serverseitige Skriptsprache
Datenbankserver
Webserver

Verwenden Sie die FS -Variable mit der Registerkarte

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

$ awk 'print $ 1' fs = '\ t' Eingabe.txt

Ausgang:

Verwenden von OFS -Variablen mit Tab

Der folgende awk -Befehl druckt die 9th Und 5th Felder von 'ls -l' Befehlsausgabe mit Registerkarte Separator nach dem Drucken des Spaltenentitels “Name" Und "Größe”. Hier, Ofs Variable wird verwendet, um die Ausgabe nach einer Registerkarte zu formatieren.

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

Ausgang:

Gehen Sie zu Inhalt

awk mit CSV -Daten

Der Inhalt einer CSV -Datei kann auf mehreren Arten mit dem Befehl awk analysiert werden. Erstellen Sie eine CSV -Datei mit dem Namen 'Kunde.CSV'Mit dem folgenden Inhalt, um awk zu anwenden.

Kunde.txt

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

Lesen Sie ein einzelnes Feld der CSV -Datei

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

$ Cat Kunde.CSV
$ awk -f "," 'print $ 2' Kunde.CSV

Ausgang:

Lesen Sie mehrere Felder, indem Sie sich mit einem anderen Text kombinieren

Der folgende Befehl druckt drei Felder von Kunde.CSV Durch Kombination des Titeltextes, Name, E -Mail und Telefon. Die erste Zeile der Kunde.CSV Die Datei enthält den Titel jedes Feldes. Nr Die Variable enthält die Zeilennummer der Datei, wenn awk den Befehl der Datei analysiert. In diesem Beispiel, die nr Variable wird verwendet, um die erste Zeile der Datei wegzulassen. Die Ausgabe zeigt die 2nd, 3Rd und 4th Felder aller Zeilen außer der ersten Zeile.

$ awk -f "," 'nr> 1 print "Name:" $ 2 ", E -Mail:" $ 3 ", Telefon:" $ 4' Kunde.CSV

Ausgang:

Lesen Sie die CSV -Datei mit einem awk -Skript

awk Skript kann ausgeführt werden, indem awk -Datei ausgeführt wird. Wie Sie awk -Datei erstellen und die Datei ausführen können, wird in diesem Beispiel angezeigt. Erstellen Sie eine Datei mit dem Namen awkcsv.awk mit dem folgenden Code. START Das Schlüsselwort wird im Skript verwendet, um awk zu informieren, um das Skript des START Teil zuerst, bevor Sie andere Aufgaben ausführen. Hier, Feldabscheider (Fs) wird verwendet, um die Aufteilung des Trennzeichens und 2 zu definierennd und 1st Felder werden gemäß dem in printf () -Funktion verwendeten Format gedruckt.

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

Laufen awkcsv.awk Datei mit dem Inhalt von der Kunde.CSV Datei nach dem folgenden Befehl.

$ awk -f awkcsv.awk Kunde.CSV

Ausgang:

Gehen Sie zu Inhalt

awk regex

Der reguläre Ausdruck ist ein Muster, das verwendet wird, um eine Zeichenfolge in einem Text zu durchsuchen. Verschiedene Arten komplizierter Such- und Ersatzaufgaben können sehr einfach unter Verwendung des regulären Ausdrucks erfolgen. In diesem Abschnitt werden einige einfache Verwendungen des regulären Ausdrucks mit awk angezeigt.

Matching Character Set

Der folgende Befehl stimmt mit dem Wort überein Dummkopf oder Bool oder Cool mit der Eingangszeichenfolge und drucken, wenn das Wort gefunden wird. Hier, Puppe Wird nicht übereinstimmen und nicht drucken.

$ printf "Fool \ ncool \ ndoll \ nbool" | awk '/[fbc] ool/'

Ausgang:

Suchen Sie die Zeichenfolge zu Beginn der Zeile

'^' Das Symbol wird im regulären Ausdruck verwendet, um jedes Muster an der Start der Linie zu durchsuchen. ''Linux ' Das Wort wird zu Beginn jeder Zeile des Textes im folgenden Beispiel durchsucht. Hier beginnen zwei Zeilen mit dem Text, 'Linux'Und diese beiden Zeilen werden im Ausgang angezeigt.

$ echo -e "Linux ist frei zu verwenden \ n Es ist eine Open -Source -Software \ nlinuxHint ist
Eine beliebte Blog -Site "awk '/^Linux/'

Ausgang:

Suchen Sie die Zeichenfolge am Ende der Zeile

"$" Das Symbol wird im regulären Ausdruck verwendet, um jedes Muster am Ende jeder Zeile des Textes zu durchsuchen. ''Skript'Wort wird im folgenden Beispiel durchsucht. Hier enthalten zwei Zeilen das Wort, Skript am Ende der Linie.

$ echo -e "PHP -Skript \ njavaScript \ nvisual Programmierung" | awk '/script $/'

Ausgang:

Suche durch Auslassen eines bestimmten Zeichensatzes

'^' Das Symbol gibt den Start des Textes an, wenn es vor einem Stringmuster verwendet wird (' /^… /') oder bevor ein von einem Zeichen gesetzter Zeichen von deklariert wurde durch ^[…]. Wenn der '^' Das Symbol wird in der dritten Halterung verwendet, [^…], dann wird das definierte Zeichen in der Klammer zum Zeitpunkt der Suche weggelassen. Der folgende Befehl sucht jedes Wort, das nicht beginnt, mit 'F' aber mit 'enden'Ool''. Cool Und bool wird gemäß den Muster- und Textdaten gedruckt.

$ printf "Fool \ ncool \ ndoll \ nbool" | awk '/[^f] ool/'

Ausgang:

Gehen Sie zu Inhalt

awk case unempfindlich regex

Standardmäßig sucht der reguläre Ausdruck bei der Suche nach einer sensiblen Suche bei der Suche nach einem Muster in der Zeichenfolge. Fallunempfindliche Suche kann durch den Befehl awk mit dem regulären Ausdruck durchgeführt werden. Im folgenden Beispiel, zu senken() Funktion wird verwendet, um eine unempfindliche Suche nach Fall zu machen. Hier wird das erste Wort jeder Zeile des Eingabtextes durch Verwendung in den niedrigeren Fall konvertiert zu senken() Funktion und Übereinstimmung mit dem regulären Ausdrucksmuster. toupper () Die Funktion kann auch für diesen Zweck verwendet werden. In diesem Fall muss das Muster durch alle Großbuchstaben definiert werden. Der im folgende Beispiel definierte Text enthält das Suchwort, 'Netz'In zwei Zeilen, die als Ausgabe gedruckt werden.

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

Ausgang:

Gehen Sie zu Inhalt

awk mit NF (Anzahl der Felder) Variable

Nf ist eine integrierte Variable des awk. Erstellen Sie eine Textdatei mit mehreren Zeilen und mehreren Wörtern. die Eingabe.txt Die Datei wird hier verwendet, die im vorherigen Beispiel erstellt wird.

Verwenden von NF aus der Befehlszeile

Hier wird der erste Befehl verwendet, um den Inhalt von anzuzeigen Eingang.txt Die Datei und der zweite Befehl werden verwendet, um die Gesamtzahl der Felder in jeder Zeile der Datei mithilfe der Datei anzuzeigen Nf Variable.

$ cat Input.txt
$ awk 'print nf' Eingabe.txt

Ausgang:

Verwenden von NF in AWK in der Datei awk

Erstellen Sie eine awk -Datei mit dem Namen zählen.awk mit dem unten angegebenen Skript. Wenn dieses Skript mit allen Textdaten ausgeführt wird, werden jeder Zeileninhalt mit Gesamtfeldern als Ausgabe gedruckt.

zählen.awk

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

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

$ awk -f zählen.awk Eingabe.txt

Ausgang:

Gehen Sie zu Inhalt

awk GENSUB () -Funktion

getub () ist eine Substitutionsfunktion, die verwendet wird, um die Zeichenfolge basierend auf einem bestimmten Trennzeichen oder einem regulären Expressionsmuster zu suchen. Diese Funktion ist in definiert in 'gaffen' Paket, das standardmäßig nicht installiert ist. Die Syntax für diese Funktion ist unten angegeben. Der erste Parameter enthält das reguläre Expressionsmuster oder der Suchgrenzwerte, der zweite Parameter enthält den Ersatztext, der dritte Parameter zeigt an, wie die Suche durchgeführt wird, und der letzte Parameter enthält den Text, in dem diese Funktion angewendet wird.

Syntax:

Gensub (Regexp, Ersatz, wie [, Ziel])

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

$ sudo apt-Get Installieren Sie Gawk

Erstellen Sie eine Textdatei mit dem Namen 'SalesInfo.txt'Mit dem folgenden Inhalt, um dieses Beispiel zu üben. Hier sind die Felder durch eine Registerkarte getrennt.

SalesInfo.txt

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

Führen Sie den folgenden Befehl aus, um die numerischen Felder des SalesInfo.txt Datei und drucken Sie die Gesamtsumme aller Verkaufsbetrag. Hier gibt der dritte Parameter 'g' die globale Suche an. Das bedeutet, dass das Muster im vollständigen Inhalt der Datei durchsucht wird.

$ awk 'x = Gensub ("\ t", "", "g", $ 2); printf x "+" end print 0 'SalesInfo.txt | Bc -l

Ausgang:

Gehen Sie zu Inhalt

awk mit Rand () Funktion

Rand () Funktion wird verwendet, um eine Zufallszahl von mehr als 0 und weniger als 1 zu erzeugen. Es erzeugt also immer eine Bruchnummer weniger als 1. Der folgende Befehl generiert eine fraktionale Zufallszahl und multiplizieren Sie den Wert mit 10, um eine Zahl mehr als 1 zu erhalten. Eine fraktionale Nummer mit zwei Ziffern nach dem Dezimalpunkt wird für die Anwendung von printf () -Funktionen gedruckt. Wenn Sie den folgenden Befehl mehrmals ausführen, erhalten Sie jedes Mal unterschiedliche Ausgaben.

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

Ausgang:

Gehen Sie zu Inhalt

awk Benutzer definierter Funktion

Alle in den vorherigen Beispielen verwendeten Funktionen sind integrierte Funktionen. Sie können jedoch eine benutzerdefinierte Funktion in Ihrem awk-Skript deklarieren, um eine bestimmte Aufgabe zu erledigen. Nehmen wir an, Sie möchten eine benutzerdefinierte Funktion erstellen, um den Bereich eines Rechtecks ​​zu berechnen. Erstellen Sie zu dieser Aufgabe eine Datei namens 'Bereich.awk'Mit dem folgenden Skript. In diesem Beispiel eine benutzerdefinierte Funktion benannt Bereich() wird in dem Skript deklariert, das den Bereich basierend auf den Eingabeparametern berechnet und den Flächenwert zurückgibt. Getline Der Befehl wird hier verwendet, um Eingaben vom Benutzer zu nehmen.

Bereich.awk

# Fläche berechnen
Funktionsbereich (Höhe, Breite)
Renditehöhe*Breite

# Startet die Ausführung
START
Drucken Sie "Geben Sie den Wert der Höhe ein:"
Getline h < "-"
Drucken "Geben Sie den Wert der Breite ein:"
Getline w < "-"
Druck "Area =" Area (h, w)

Führen Sie das Skript aus.

$ awk -f Bereich.awk

Ausgang:

Gehen Sie zu Inhalt

awk wenn Beispiel

awk unterstützt bedingte Aussagen wie andere Standard -Programmiersprachen. In diesem Abschnitt werden drei Arten von If -Aussagen unter Verwendung von drei Beispielen angezeigt. Erstellen Sie eine Textdatei mit dem Namen Artikel.txt mit dem folgenden Inhalt.

Artikel.txt

HDD Samsung $ 100
Maus A4tech
Drucker HP $ 200

Einfach, wenn Beispiel:

Der folgende Befehl wird den Inhalt des Artikel.txt Datei und überprüfen Sie die 3Rd Feldwert in jeder Zeile. Wenn der Wert leer ist, wird eine Fehlermeldung mit der Zeilennummer drucken.

$ awk 'if ($ 3 == "") drucken "Preisfeld fehlt in Zeile" nr' Artikel.txt

Ausgang:

IF-ELSE-Beispiel:

Der folgende Befehl druckt den Artikelpreis, wenn der 3Rd Das Feld existiert in der Zeile, andernfalls wird eine Fehlermeldung gedruckt.

$ awk 'if ($ 3 == "") Print "Preisfeld fehlt"
sonst drucken "Artikelpreis lautet" $ 3 'Artikel.txt

Ausgang:

IF-ELSE-IF BEISPIEL:

Wenn der folgende Befehl aus dem Terminal ausgeführt wird, wird der Benutzer eingegeben. Der Eingangswert wird mit jedem Zustand verglichen, bis die Bedingung wahr ist. Wenn eine Bedingung wahr wird, druckt sie die entsprechende Note aus. Wenn der Eingangswert nicht mit einer Bedingung übereinstimmt, druckt er fehl.

$ awk 'begin print "Eingeben Sie die Marke:"
Getline Mark < "-"
if (mark> = 90) Druck "a+" drucken
sonst wenn (mark> = 80) drucken "a" "
sonst wenn (mark> = 70) drucken "b+" drucken
sonst drucken "fail" '

Ausgang:

Gehen Sie zu 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 variablen Namen verwendet, damit die Shell -Variable den Wert lesen kann. Es ist jedoch nicht erforderlich, '$' mit awk -Variable zu verwenden, um den Wert zu lesen.

Verwendung einer einfachen Variablen:

Der folgende Befehl deklariert eine Variable benannt 'Grundstück' und dieser Variablen wird ein Stringwert zugewiesen. Der Wert der Variablen wird in der nächsten Anweisung gedruckt.

$ awk 'begin site = "LinuxHint.com "; Druckseite '

Ausgang:

Verwenden einer Variablen, um Daten aus einer Datei abzurufen

Der folgende Befehl sucht das Wort 'Drucker' in der Datei Artikel.txt. Wenn eine Zeile der Datei mit beginnt mit 'Drucker'Dann speichert es den Wert von 1st, 2nd Und 3Rd Felder in drei Variablen. Name Und Preis Variablen werden gedruckt.

$ awk '/ drucker/ name = $ 1; brand = $ 2; price = $ 3; drucken "item name =" name;
Drucken Sie "Artikelpreis =" Preis 'Artikel.txt

Ausgang:

Gehen Sie zu Inhalt

awk Arrays

Sowohl numerische als auch zugehörige Arrays können in awk verwendet werden. Die Array -Variable -Deklaration in awk ist für andere Programmiersprachen gleich. Einige Verwendungen von Arrays werden in diesem Abschnitt angezeigt.

Assoziatives Array:

Der Index des Arrays ist eine Zeichenfolge für das assoziative Array. In diesem Beispiel wird eine assoziative Reihe von drei Elementen deklariert und gedruckt.

$ awk 'begin
Bücher ["Webdesign"] = "Lernen HTML 5";
Bücher ["Webprogrammierung"] = "Php und MySQL"
Bücher ["PHP Framework"] = "Lernen Laravel 5"
printf "%s \ n%s \ n%s \ n", books ["Web Design"], Bücher ["Webprogrammierung"],
Bücher ["Php Framework"] '

Ausgang:

Numerisches Array:

Eine numerische Anordnung von drei Elementen wird deklariert und gedruckt, indem die Registerkarte getrennt wird.

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

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

Ausgang:

Gehen Sie zu Inhalt

awk Loop

Drei Arten von Schleifen werden von awk unterstützt. Die Verwendungen dieser Schleifen werden hier unter Verwendung von drei Beispielen angezeigt.

While-Schleife:

Während die Schleife, die im folgenden Befehl verwendet wird.

$ awk 'begin n = 1; während (n 5) brechen; Druck n; N ++ '

Ausgang:

Für Schleife:

Für die im folgende awk verwendete Schleife berechnet die Summe von 1 bis 10 und drucken Sie den Wert aus.

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

Ausgang:

DO-während der Schleife:

Bei einer Schleife des folgenden Befehls werden alle gleichmäßigen Zahlen von 10 bis 5 gedruckt.

$ awk 'begin counter = 10; Do if (Counter%2 == 0) Druckzähler; Schalter--
während (Zähler> 5) '

Ausgang:

Gehen Sie zu Inhalt

awk, um die erste Spalte zu drucken

Die erste Spalte jeder Datei kann durch Verwendung von $ 1 -Variablen in awk gedruckt werden. Wenn jedoch der Wert der ersten Spalte mehrere Wörter enthält, druckt nur das erste Wort der ersten Spalte. Durch die Verwendung eines bestimmten Trenners kann die erste Spalte ordnungsgemäß gedruckt werden. Erstellen Sie eine Textdatei mit dem Namen Studenten.txt mit dem folgenden Inhalt. Hier enthält die erste Spalte den Text von zwei Wörtern.

Studenten.txt

Kaniz fatema 30th Charge
Abir Hossain 35th Charge
John Abraham 40th Charge

Run AWK -Befehl ohne Trennzeichen ausführen. Der erste Teil der ersten Spalte wird gedruckt.

$ awk 'print $ 1' Studenten.txt

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

$ awk -f '\\ s \\ s' '' print $ 1 'Studenten.txt

Ausgang:

Gehen Sie zu Inhalt

awk, um die letzte Spalte zu drucken

$ (NF) Variable kann verwendet werden, um die letzte Spalte jeder 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)' Studenten.txt
$ awk -f '\\ s \\ s' '' print $ (nf) 'Studenten.txt

Ausgang:

Gehen Sie zu Inhalt

awk mit Grep

Grep ist ein weiterer nützlicher Befehl von Linux, um Inhalte in einer Datei basierend auf einem regulären Ausdruck zu durchsuchen. Wie sowohl awk- als auch grep -Befehle zusammen verwendet werden können, wird im folgenden Beispiel gezeigt. Grep Der Befehl wird verwendet, um Informationen zur Mitarbeiter -ID zu durchsuchen. '1002' aus der Arbeitnehmer.txt Datei. Die Ausgabe des GREP -Befehls wird als Eingabedaten an awk gesendet. 5% Bonus werden basierend auf dem Gehalt der Mitarbeiter -ID gezählt und gedruckt. '1002 ' BY AWK Befehl.

$ cat Angestellter.txt
$ grep '1002' Mitarbeiter.txt | awk -f '\ t' 'print $ 2 "wird $" ($ 3*5)/100 "Bonus"'

Ausgang:

Gehen Sie zu Inhalt

awk mit Bash -Datei

Wie bei anderen Linux -Befehl kann auch der Befehl awk auch in einem Bash -Skript verwendet werden. Erstellen Sie eine Textdatei mit dem Namen Kunden.txt mit dem folgenden Inhalt. Jede Zeile dieser Datei enthält Informationen zu vier Feldern. Dies sind ID, Name, Adresse und Handynummer des Kunden, die von getrennt werden '/''.

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.verprügeln mit dem folgenden Skript. Gemäß diesem Skript wird der Zustand des Benutzers vom Benutzer übernommen und gesucht Die Kunden.txt Datei von Grep Befehl und als Eingabe an den awk -Befehl übergeben. AWK wird Befehl lesen 2nd Und 4th Felder jeder Zeile. Wenn der Eingangswert mit einem Zustandswert von übereinstimmt Kunden.txt Datei drucken dann die Kunden des Kunden Name Und Handy Nummer, Andernfalls werden die Nachricht gedruckt “Kein Kunde gefunden”.

item_search.verprügeln

#!/Bin/Bash
Echo "Geben Sie den Staatsnamen ein:"
Staat lesen
Kunden = 'Grep "$ State" Kunden.txt | awk -f "/" 'print "Kundenname:" $ 2, ",
Mobilfunk Nr.: "$ 4 ''
Wenn ["$ customer" != ""]; Dann
Echo $ Kunden
anders
echo "kein Kunde gefunden"
fi

Führen Sie die folgenden Befehle aus, um die Ausgänge anzuzeigen.

$ cat Kunden.txt
$ bash item_search.verprügeln

Ausgang:

Gehen Sie zu Inhalt

awk mit sed

Ein weiteres nützliches Suchwerkzeug von Linux ist sed. Dieser Befehl kann sowohl zum Suchen als auch zum Ersetzen des Textes jeder Datei verwendet werden. Das folgende Beispiel zeigt die Verwendung des awk -Befehls mit sed Befehl. Hier wird der Befehl SED alle Mitarbeiternamen mit 'durchsucht.'J'und übergeht an awk als Eingabe an awk. awk wird Mitarbeiter drucken Name Und AUSWEIS nach der Formatierung.

$ cat Angestellter.txt
$ sed -n '/j/p' Mitarbeiter.txt | awk -f '\ t' 'printf "%s (%s) \ n", $ 2, $ 1'

Ausgang:

Gehen Sie zu Inhalt

Abschluss:

Sie können awk den Befehl verwenden, um verschiedene Arten von Berichten basierend auf tabellarischen oder abgrenzten Daten zu erstellen, nachdem die Daten ordnungsgemäß gefiltert wurden. Hoffe, Sie können lernen, wie awk den Befehl funktioniert, nachdem Sie die in diesem Tutorial gezeigten Beispiele geübt haben.