Viele utility tools existieren in die Linux betriebs system zu suchen und erzeugen einen bericht von text daten oder datei. Der Benutzer kann mit awk -, grep-und sed-Befehlen problemlos viele Arten von Such -, Ersetzungs-und Berichtsgenerierungsaufgaben 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 Zeile für Zeile lesen und die Felder oder Spalten basierend auf einem bestimmten Trennzeichen trennen. Es unterstützt auch reguläre Ausdrücke für die Suche bestimmten String im Textinhalt oder Datei und nimmt Aktionen, wenn eine Übereinstimmung Grenzen. Wie Sie awk Befehl und Skript verwenden können, wird in diesem Tutorial anhand von 20 nützlichen Beispielen gezeigt.,a
Using awk with printf
printf() function is used to format any output in most of the programming languages., Diese Funktion kann mit dem Befehl awk verwendet werden, um verschiedene Arten formatierter Ausgaben zu generieren. awk-Befehl hauptsächlich für jede Textdatei verwendet. Erstellen Sie eine Textdatei mit dem Namen Mitarbeiter.txt mit dem unten angegebenen Inhalt, wobei Felder durch Tabulatoren getrennt sind (‚\t‘).
Mitarbeiter.txt
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny Leber 70000
Die folgenden awk-Befehl liest Daten von Mitarbeiter.txt-Datei Zeile für Zeile und drucken Sie die erste Datei nach der Formatierung. Hier bedeutet“ %10s\n“, dass die Ausgabe 10 Zeichen lang ist., Wenn der Wert der Ausgabe weniger als 10 Zeichen beträgt, werden die Leerzeichen vorne am Wert hinzugefügt.
Ausgabe:
Gehe zum Inhalt
awk zum Teilen auf Leerzeichen
Das Standardwort-oder Feldtrennzeichen zum Teilen von Text ist Leerzeichen. awk Befehl kann Textwert als Eingabe auf verschiedene Arten nehmen. Der Eingabetext wird im folgenden Beispiel vom Befehl echo übergeben., Der Text „Ich mag Programmierung“ wird standardmäßig durch Trennzeichen und Leerzeichen geteilt und das dritte Wort wird als Ausgabe gedruckt.
Ausgabe:
zum Inhalt
awk änderung der Trennzeichen
awk-Befehl kann verwendet werden, um ändern Sie das Trennzeichen für jede Datei Inhalt. Angenommen, Sie haben eine Textdatei namens phone.txt mit folgendem Inhalt, wobei ‚: ‚als Feldtrennzeichen des Dateiinhalts verwendet wird.
Tel.,txt
+880:1855:456:907
+9:7777:38644:808
Führen Sie den folgenden awk-Befehl ändern Sie das Trennzeichen ‚:‘ durch‘ -‚, um die Inhalte der Datei, Tel.txt.
$ awk ‚$1=$1 “ FS=“:“ OFS=“-“ Telefon.txt
Ausgabe:
Gehe zum Inhalt
awk mit tabulatorgetrennten Daten
awk Befehl hat viele eingebaute Variablen, die verwendet werden, um den Text auf verschiedene Arten zu lesen. Zwei von Ihnen sind FS und OFS., FS ist Eingabefeldtrennzeichen und OFS ist Ausgabefeldtrennzeichen Variablen. Die Verwendung dieser Variablen wird in diesem Abschnitt gezeigt. Erstellen Sie eine tabulatorgetrennte Datei mit dem Namen Eingabe.txt mit dem folgenden Inhalt, um die Verwendung von FS-und OFS-Variablen zu testen.
Eingang.txt
Serverseitige Skriptsprache
Datenbankserver
Webserver
Verwendung einer Variablen mit Tab
Der folgende Befehl teilt jede Eingabezeile auf.txt-Datei basierend auf der Registerkarte (‚\t‘) und drucken Sie das erste Feld jeder Zeile.,
Ausgabe:
Verwendung der OFS-Variablen mit Tab
Der folgende awk-Befehl druckt die 9.und 5. Felder der Befehlsausgabe von ‚ls-l‘ mit Tabulatortrennzeichen nach dem Drucken des Spaltentitels“ Name „und“Größe“. Hier wird die OFS-Variable verwendet, um die Ausgabe über eine Registerkarte zu formatieren.,
$ ls -l | awk -v OFS=’\t‘ ‚BEGIN { printf „%s\t%s\n“, „Name“, „Größe“} {print $9,$5}‘
Ausgabe:
zum Inhalt
awk mit CSV-Daten
Der Inhalt der CSV-Datei analysiert werden kann in mehrere Möglichkeiten, durch die Verwendung von awk Befehl. Erstellen Sie eine CSV-Datei mit dem Namen ‘customer.csv‘ mit dem folgenden Inhalt awk Befehl anzuwenden.
Kunde.txt
Lesen Sie einzelne Felder der CSV-Datei
‚-F‘ – option wird mit den awk-Befehl zum festlegen der Trennzeichen für die Teilung jeder Zeile der Datei., Der folgende Befehl awk druckt das Feld name des Kunden.csv-Datei.
$ awk -F „,“ ‚{print $2}‘ Kunden.csv
Ausgabe:
Lesen mehrerer Felder durch Kombination mit anderem Text
Der folgende Befehl druckt drei Kundenfelder.csv durch die Kombination von Titeltext, Name, E-Mail und Telefon. Die erste Zeile des Kunden.csv-Datei enthält den Titel jedes Feldes. NR Variable enthält die Zeilennummer der Datei, wenn awk Befehl die Datei analysiert., In diesem Beispiel wird die Variable NR verwendet, um die erste Zeile der Datei wegzulassen. Die Ausgabe zeigt das 2., 3. und 4. Feld aller Zeilen außer der ersten Zeile an.
Ausgabe:
Lesen der CSV-Datei mit einem awk-Skript
awk-Skript kann ausgeführt werden, indem awk-Datei ausgeführt wird. In diesem Beispiel wird gezeigt, wie Sie awk-Dateien erstellen und ausführen können. Erstellen Sie eine Datei namens awkcsv.awk mit dem folgenden code., Das Schlüsselwort BEGIN wird im Skript verwendet, um den Befehl awk darüber zu informieren, dass das Skript des BEGIN-Teils zuerst ausgeführt wird, bevor andere Aufgaben ausgeführt werden. Hier wird das Feldtrennzeichen (FS) verwendet, um Trennzeichen zu definieren, und das 2.und 1. Feld werden entsprechend dem in der printf () – Funktion verwendeten Format gedruckt.
BEGIN {FS = „,“} {printf „%5s(%s)\n“, $2,$1}
Ausführen awkcsv.awk-Datei mit dem Inhalt des Kunden.csv-Datei mit dem folgenden Befehl.
Ausgabe:
Gehe zum Inhalt
awk regex
Der reguläre Ausdruck ist ein Muster, mit dem eine beliebige Zeichenfolge in einem Text gesucht wird. Verschiedene Arten komplizierter Such – und Ersetzungsaufgaben können mithilfe des regulären Ausdrucks sehr einfach ausgeführt werden. In diesem Abschnitt werden einige einfache Verwendungen des regulären Ausdrucks mit dem Befehl awk gezeigt.
Der folgende Befehl stimmt mit dem Wort Fool oder bool oder Cool mit der Eingabezeichenfolge überein und druckt, wenn das Wort gründet., Hier wird Puppe nicht übereinstimmen und nicht drucken.
Ausgabe:
Suchzeichenfolge am Anfang der Zeile
‚^‘ Symbol wird im regulären Ausdruck verwendet, um ein beliebiges Muster am Anfang der Zeile zu suchen
linie. ‚Linux‘ Wort wird am Anfang jeder Zeile des Textes im folgenden Beispiel gesucht werden. Hier beginnen zwei Zeilen mit dem Text ‚Linux‘ und diese beiden Zeilen werden in der Ausgabe angezeigt.,
eine beliebte Blog-Site“ | awk ‚/^Linux/‘
Ausgabe:
Suchzeichenfolge am Ende der Zeile
Das Symbol’$‘ wird im regulären Ausdruck verwendet, um ein beliebiges Muster am Ende jeder Textzeile zu durchsuchen. Das Wort „Skript“ wird im folgenden Beispiel gesucht. Hier enthalten zwei Zeilen das Wort Script am Ende der Zeile.,
Ausgabe:
Suche durch Weglassen eines bestimmten Zeichensatzes
Das Symbol’^‘ gibt den Anfang des Textes an, wenn er vor beliebiges Zeichenfolgenmuster (‚/^…/‘) oder vor einem von ^deklarierten Zeichensatz. Wenn das Symbol ‚ ^ ‚ innerhalb der dritten Klammer verwendet wird, wird der definierte Zeichensatz innerhalb der Klammer zum Zeitpunkt der Suche weggelassen., Der folgende Befehl sucht jedes Wort, das nicht mit ‚F‘ beginnt, sondern mit ‚ool‘ endet. Cool und bool werden entsprechend den Muster-und Textdaten gedruckt.
Ausgabe:
zum Inhalt
awk case insensitive regex
standardmäßig regulären Ausdruck nicht groß-und Kleinschreibung beachten bei der Suche auf Muster in der Zeichenfolge. Groß-und Kleinschreibung Suche kann durch awk Befehl mit dem regulären Ausdruck durchgeführt werden., Im folgenden Beispiel wird die Funktion tolower () verwendet, um die Groß-und Kleinschreibung zu suchen. Hier wird das erste Wort jeder Zeile des Eingabetextes mithilfe der Funktion tolower() in Kleinbuchstaben konvertiert und mit dem Muster für reguläre Ausdrücke übereinstimmen. 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 ‚ web ‚ in zwei Zeilen, das als Ausgabe gedruckt wird.,
Ausgabe:
Gehe zum Inhalt
awk mit NF (Anzahl der Felder) Variable
NF ist eine integrierte Variable des Befehls awk, mit der die Gesamtzahl der Felder in jeder Zeile des Eingabetextes gezählt wird. Erstellen Sie eine beliebige Textdatei mit mehreren Zeilen und mehreren Wörtern. Eingang.hier wird eine txt-Datei verwendet, die im vorherigen Beispiel erstellt wurde.,
Verwenden von NF über die Befehlszeile
Hier wird der erste Befehl verwendet, um den Inhalt der Eingabe anzuzeigen.txt-Datei und zweiten Befehl wird verwendet, um die Gesamtzahl der Felder in jeder Zeile der Datei mit NF Variable zeigen.
$ awk ‚{print NF}‘ input.txt
Ausgabe:
Mit NF im awk-Datei
Erstellen Sie ein awk-Datei mit dem Namen count.awk mit dem unten angegebenen Skript. Wenn dieses Skript mit beliebigen Textdaten ausgeführt wird, wird jeder Zeileninhalt mit Gesamtfeldern als Ausgabe gedruckt.
Graf.,awk
{print „“}
Führen Sie das Skript mit dem folgenden Befehl.
Ausgabe:
zum Inhalt
awk gensub () – Funktion
getsub() ist eine substitution Funktion, die Suche verwendet wird-Zeichenfolge basierend auf bestimmten Trennzeichen oder einen regulären Ausdruck Muster. Diese Funktion ist im ‚gawk‘ – Paket definiert, das standardmäßig nicht 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:
Führen Sie den folgenden Befehl zum installieren von gawk-Paket für die Verwendung getsub () – Funktion mit awk Befehl.
Erstellen Sie eine text-Datei mit dem Namen ‘folgende Adresse: SalesInfo.,txt‘ mit dem folgenden Inhalt dieses Beispiel zu üben. Hier sind die Felder durch eine Registerkarte getrennt.
folgende Adresse: SalesInfo.txt
Di 800000
Mi 750000
Do 200000
Fr 430000
Sat 820000
Führen Sie den folgenden Befehl aus, um die numerischen Felder der salesinfo zu lesen.txt-Datei und drucken Sie die Summe aller Umsatzmenge. Hier gibt der dritte Parameter ‚G‘ die globale Suche an. Das bedeutet, dass das Muster im vollständigen Inhalt der Datei durchsucht wird.,
Ausgabe:
zum Inhalt
awk mit der rand () – Funktion
Funktion rand() erzeugt eine zufällige Zahl, die größer als 0 und kleiner als 1 ist. Es wird also immer eine Bruchzahl von weniger als 1 generiert. Der folgende Befehl generiert eine gebrochene Zufallszahl und multipliziert den Wert mit 10, um eine Zahl von mehr als 1 zu erhalten., Zur Anwendung der Funktion printf() wird eine Bruchzahl mit zwei Ziffern nach dem Komma gedruckt. Wenn Sie den folgenden Befehl mehrmals ausführen, erhalten Sie jedes Mal eine andere Ausgabe.
Ausgabe:
Gehe zum Inhalt
awk benutzerdefinierte Funktion
Alle Funktionen, die in den vorherigen Beispielen verwendet werden, sind integrierte Funktionen. Sie können jedoch eine benutzerdefinierte Funktion in Ihrem awk-Skript 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 dazu eine Datei mit dem Namen ‘area.awk‘ mit dem folgenden Skript. In diesem Beispiel wird eine benutzerdefinierte Funktion namens area() im Skript deklariert, die den Bereich basierend auf den Eingabeparametern berechnet und den Bereichswert zurückgibt. getline Befehl wird hier verwendet, um Eingaben vom Benutzer zu nehmen.
Bereich.awk
Führen Sie das Skript aus.
Ausgabe:
Gehe zum Inhalt
awk if example
awk unterstützt bedingte Anweisungen wie andere Standardprogrammiersprachen. Drei Arten von if-Anweisungen werden in diesem Abschnitt anhand von drei Beispielen angezeigt. Erstellen Sie eine Textdatei mit dem Namen items.txt mit folgendem Inhalt.
– Elemente.txt
Maus A4Tech
Drucker HP $200
Einfache wenn beispiel:
er folgenden befehl wird lesen sie den inhalt der artikel.txt-Datei und überprüfen Sie den 3. Feldwert in jeder Zeile., Wenn der Wert leer ist, wird eine Fehlermeldung mit der Zeilennummer gedruckt.
Ausgabe:
if-else Beispiel:
Der folgende Befehl druckt den Artikelpreis, wenn das dritte Feld in der Zeile vorhanden ist, andernfalls wird eine Fehlermeldung ausgegeben.
else print „Einzelpreis ist“ $3 }‘ items.,txt
Ausgabe:
if-else-if Beispiel:
Wenn der folgende Befehl vom Terminal aus 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 nicht mit einer Bedingung übereinstimmt, wird der Druck fehlschlagen.,
getline mark < „-„
if (mark >= 90) print „A+“
else if( mark >= 80) print „A“
else if( mark >= 70) print „B+“
else print „Fail“ }‘
Ausgabe:
zum Inhalt
awk-Variablen
Die Erklärung der awk-variable ist ähnlich der Erklärung des shell-variable. Es gibt einen Unterschied beim Lesen des Werts der Variablen., ‚$’Symbol wird mit dem Variablennamen für die Shell-Variable verwendet, um den Wert zu lesen. Es ist jedoch nicht erforderlich, ‚ $ ‚ mit der Variablen awk zu verwenden, um den Wert zu lesen.
Verwenden einer einfachen Variablen:
Der folgende Befehl deklariert eine Variable mit dem Namen ’site‘ und dieser Variablen wird ein Zeichenfolgenwert zugewiesen. Der Wert der Variablen wird in der nächsten Anweisung gedruckt.
Ausgabe:
Verwenden einer Variablen zum Abrufen von Daten aus einer Datei
Der folgende Befehl durchsucht das Wort ‚Drucker‘ in den Dateielementen.txt. Wenn eine Zeile der Datei mit ‚Drucker‘ beginnt, wird der Wert des 1., 2. und 3. Feldes in drei Variablen gespeichert. name und Preisvariablen werden gedruckt.
“ print „item-price=“ price }‘ items.,txt
Ausgabe:
Gehe zum Inhalt
awk arrays
In awk können sowohl numerische als auch zugehörige Arrays verwendet werden. Die Array-Variablendeklaration in awk ist mit anderen Programmiersprachen identisch. Einige Verwendungen von Arrays werden in diesem Abschnitt gezeigt.
Assoziatives Array:
Der Index des Arrays ist eine beliebige Zeichenfolge für das assoziative Array. In diesem Beispiel wird ein assoziatives Array von drei Elementen deklariert und gedruckt.,
Ausgabe:
Numerisches Array:
Ein numerisches Array von drei Elementen wird deklariert und durch Trennen der Registerkarte gedruckt.
Ausgabe:
Gehe zum Inhalt
awk loop
Drei Arten von Schleifen werden von awk unterstützt. Die Verwendung dieser Schleifen wird hier anhand von drei Beispielen gezeigt.
While-Schleife:
while-Schleife, die im folgenden Befehl verwendet wird, wird 5 Mal iteriert und aus der Schleife für die break-Anweisung beendet.,
Ausgabe:
For-Schleife:
For-Schleife, die ist verwendet in die folgenden awk-Befehl berechnet die Summe von 1 bis 10 und drucken Sie den Wert.,
Ausgabe:
Do-while-Schleife:
eine do-while-Schleife wird der folgende Befehl druckt alle geraden zahlen von 10 auf 5.,
while (counter > 5) }‘
Ausgabe:
zum Inhalt
awk drucken der ersten Spalte
Die erste Spalte jeder Datei können gedruckt werden durch mit $1 Variablen in awk. 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 ordnungsgemäß 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
Abir Hossain 35<sup>th</sup> batch
John Abraham 40<sup>th</sup> batch
Run awk command without any delimiter. The first part of the first column will be printed.,
Führen Sie den Befehl awk mit dem folgenden Trennzeichen aus. Der vollständige Teil der ersten Spalte wird gedruckt.
Ausgabe:
Gehe zum Inhalt
awk zum Drucken der letzten Spalte
$(NF) Variable kann zum Drucken der letzten Spalte einer beliebigen Datei verwendet werden. Die folgenden awk-Befehle drucken den letzten Teil und den vollständigen Teil der letzten Spalte der Schüler.txt-Datei.,
$ awk -F ‚\\s\\s‘ ‚{print $(NF)}‘ Studenten.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 regulären Ausdruck zu suchen. Wie awk-und grep-Befehle zusammen verwendet werden können, wird im folgenden Beispiel gezeigt. grep-Befehl wird verwendet, um Informationen der Mitarbeiter-ID zu suchen, ‚1002‘ von dem Mitarbeiter.txt-Datei. Die Ausgabe des Befehls grep wird als Eingabedaten an awk gesendet., 5% Bonus wird gezählt und gedruckt basierend auf dem Gehalt der Mitarbeiter-ID, ‚1002‘ von awk Befehl.
$ grep ‚1002‘ Mitarbeiter.txt / awk-F ‚\t “{ print $2 “ wird erhalten $“ ($3*5)/100 „bonus“} ‚
Ausgabe:
Gehe zum Inhalt
awk mit BASH-Datei
Wie andere Linux-Befehle kann awk-Befehl auch 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 Kunden-ID, Name, Adresse und Handynummer, die durch ‚/’getrennt sind.
Kunden.txt
Erstellen Sie eine Bash-Datei mit dem Namen item_search.bash mit dem folgenden Skript. Gemäß diesem Skript wird der Statuswert vom Benutzer übernommen und in den Kunden gesucht.txt-Datei mit dem Befehl grep und als Eingabe an den Befehl awk übergeben. Awk Befehl liest 2.und 4. Felder jeder Zeile. Wenn der Eingabewert mit einem Statuswert von Kunden übereinstimmt.txt-Datei dann wird der Name und die Handynummer des Kunden gedruckt, andernfalls wird die Meldung „Kein Kunde gefunden“gedruckt.,
item_search.bash
Führen Sie die folgenden Befehle aus, um die Ausgänge anzuzeigen.
$ 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 in einer beliebigen Datei verwendet werden. Das folgende Beispiel zeigt die Verwendung des Befehls awk mit dem Befehl sed. Hier wird sed Befehl alle Mitarbeiternamen suchen beginnt mit ‚ J ‚ und geht an awk Befehl als Eingabe., awk druckt den Namen und die ID des Mitarbeiters nach der Formatierung.
$ 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 getrennten Daten zu erstellen, nachdem Sie die Daten ordnungsgemäß gefiltert haben. Hoffe, Sie können lernen, wie der Befehl awk funktioniert, nachdem Sie die in diesem Tutorial gezeigten Beispiele geübt haben.