Einführung
In diesem Lab lernen Sie die Textverarbeitung in Linux kennen, wobei der Schwerpunkt auf dem leistungsstarken Befehlszeilenwerkzeug awk liegt. Die Textverarbeitung ist eine grundlegende Fähigkeit in Linux, die es Benutzern ermöglicht, Textdaten zu manipulieren, zu analysieren und sinnvolle Informationen daraus zu extrahieren.
Der awk-Befehl ist besonders nützlich für Datenmanipulationstasks. Er ermöglicht es Ihnen, Textdateien zeilenweise zu verarbeiten, jede Zeile in Felder aufzuteilen und Operationen auf diesen Feldern auszuführen. Dies macht es ideal für die Arbeit mit strukturierten Daten wie Logs, CSV-Dateien und tabellarischen Daten.
Während dieses Labs lernen Sie, wie Sie awk für verschiedene Datenverarbeitungstasks verwenden können, von einfacher Spaltenextraktion bis hin zu komplexeren Datenanalysen mit Bedingungen. Diese Fähigkeiten sind für Systemadministratoren, Datenanalysten und alle, die in einer Linux-Umgebung mit Textdaten arbeiten, unerlässlich.
Grundlagen von AWK und Erstellung von Beispieldaten
In diesem Schritt lernen Sie die Grundlagen von awk kennen und erstellen eine Beispielsdaten-Datei, mit der Sie während des gesamten Labs arbeiten werden.
Zunächst navigieren Sie in das Projektverzeichnis:
cd ~/project
Nun erstellen Sie eine Beispielsdaten-Datei namens probe_data.txt, die tabellarische Daten enthält, wobei die Spalten durch Tabulatoren getrennt sind:
echo -e "Timestamp\tReading\n2023-01-25T08:30:00Z\t-173.5\n2023-01-25T08:45:00Z\t-173.7\n2023-01-25T09:00:00Z\t-173.4" > probe_data.txt
Lassen Sie uns den Inhalt dieser Datei untersuchen:
cat probe_data.txt
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Timestamp Reading
2023-01-25T08:30:00Z -173.5
2023-01-25T08:45:00Z -173.7
2023-01-25T09:00:00Z -173.4
Diese Daten stellen Temperaturmesswerte zu verschiedenen Zeitpunkten dar.
Die grundlegende Syntax eines awk-Befehls lautet:
awk 'pattern {action}' filename
pattern: Optionale Bedingung, um festzustellen, welche Zeilen verarbeitet werden sollenaction: Der Befehl, der auf übereinstimmende Zeilen ausgeführt wirdfilename: Die Datei, die verarbeitet werden soll
Lassen Sie uns einen einfachen awk-Befehl ausführen, um die gesamte Datei auszugeben:
awk '{print}' probe_data.txt
Dieser Befehl gibt jede Zeile in der Datei aus, da kein Muster angegeben ist, sodass awk alle Zeilen verarbeitet.
Lassen Sie uns nur die Spalte mit den Messwerten (die zweite Spalte) aus unserer Daten-Datei extrahieren:
awk -F "\t" '{print $2}' probe_data.txt
In diesem Befehl:
-F "\t"setzt das Feldtrennzeichen auf ein Tabulatorzeichen{print $2}teiltawkmit, das zweite Feld jeder Zeile auszugeben
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Reading
-173.5
-173.7
-173.4
Datenfilterung mit AWK
In diesem Schritt lernen Sie, wie Sie Daten basierend auf Bedingungen mit awk filtern können. Dies ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, nur die Daten zu extrahieren, die bestimmten Kriterien entsprechen.
Mit awk können Sie Muster oder Bedingungen angeben, um festzustellen, welche Zeilen verarbeitet werden sollen. Lassen Sie uns dies anhand unserer Temperaturdaten praktisch anwenden.
Angenommen, wir möchten alle Messwerte finden, bei denen die Temperatur unter einem bestimmten Schwellenwert liegt. Dies könnte auf ungewöhnliche Bedingungen oder potenzielle Geräteprobleme hinweisen.
Lassen Sie uns alle Datensätze finden, bei denen die Temperatur unter -173,6 Grad liegt:
awk -F "\t" '$2 < -173.6 {print $0}' probe_data.txt
In diesem Befehl:
$2 < -173.6ist die Bedingung, die prüft, ob das zweite Feld (Messwert) kleiner als -173,6 ist{print $0}teiltawkmit, die gesamte Zeile auszugeben, wenn die Bedingung erfüllt ist$0repräsentiert die gesamte Zeile
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
2023-01-25T08:45:00Z -173.7
Dies zeigt, dass nur ein Messwert unter unserem Schwellenwert liegt.
Sie können auch logische Operatoren in Ihren Bedingungen verwenden. Beispielsweise finden wir alle Messwerte zwischen -173,6 und -173,3:
awk -F "\t" '$2 <= -173.4 && $2 >= -173.6 {print $0}' probe_data.txt
Die Ausgabe sollte wie folgt aussehen:
2023-01-25T09:00:00Z -173.4
Sie können auch bestimmte Spalten aus Ihren gefilterten Daten extrahieren. Beispielsweise, um nur die Zeitstempel der Messwerte unter -173,6 zu sehen:
awk -F "\t" '$2 < -173.6 {print $1}' probe_data.txt
Dies würde die folgende Ausgabe ergeben:
2023-01-25T08:45:00Z
Fortgeschrittene AWK-Operationen
In diesem letzten Schritt lernen Sie, wie Sie mit awk Berechnungen durchführen und formatierte Berichte erstellen können. Diese fortgeschrittenen Operationen zeigen, dass awk nicht nur ein einfaches Textfilterungstool ist, sondern vielseitig einsetzbar ist.
Zunächst berechnen wir die durchschnittliche Temperatur aus unseren Messwerten:
awk -F "\t" 'NR>1 {sum+=$2; count++} END {print "Average temperature: " sum/count}' probe_data.txt
In diesem Befehl:
NR>1überspringt die Kopfzeile (erste Zeile){sum+=$2; count++}addiert jede Temperatur zu einer laufenden Summe und erhöht einen ZählerEND {print "Average temperature: " sum/count}berechnet und gibt den Durchschnitt nach der Verarbeitung aller Zeilen aus
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Average temperature: -173.533
Nun erstellen wir einen detaillierteren Bericht, der sowohl die ursprünglichen Daten als auch eine Analyse enthält:
awk -F "\t" '
BEGIN {print "Temperature Reading Analysis\n---------------------------"}
NR==1 {print "Time\t\t\tReading\tStatus"}
NR>1 {
if ($2 < -173.6) status="WARNING";
else if ($2 > -173.5) status="NORMAL";
else status="CAUTION";
print $1 "\t" $2 "\t" status
}
END {print "---------------------------\nAnalysis complete."}
' probe_data.txt
Dieser komplexe Befehl:
- Gibt eine Kopfzeilen-Nachricht im
BEGIN-Block aus - Gibt Spaltenüberschriften aus, wenn die erste Zeile verarbeitet wird (
NR==1) - Für jede Datenzeile (
NR>1):- Bewertet die Temperatur und weist einen Status zu
- Gibt den Zeitstempel, den Messwert und den Status aus
- Gibt eine Fußzeilen-Nachricht im
END-Block aus
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Temperature Reading Analysis
---------------------------
Time Reading Status
2023-01-25T08:30:00Z -173.5 CAUTION
2023-01-25T08:45:00Z -173.7 WARNING
2023-01-25T09:00:00Z -173.4 NORMAL
---------------------------
Analysis complete.
Erstellen wir noch ein weiteres Beispiel, das zeigt, wie man mit awk Vorkommen zählen kann. Wir zählen, wie viele Messwerte in jede Statuskategorie fallen:
awk -F "\t" '
NR>1 {
if ($2 < -173.6) status="WARNING";
else if ($2 > -173.5) status="NORMAL";
else status="CAUTION";
count[status]++
}
END {
print "Status counts:";
for (status in count) print status ": " count[status]
}
' probe_data.txt
Dieser Befehl verwendet ein assoziatives Array (count), um zu verfolgen, wie viele Messwerte in jede Statuskategorie fallen, und gibt dann die Summen aus.
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Status counts:
WARNING: 1
NORMAL: 1
CAUTION: 1
Diese Beispiele zeigen, wie leistungsstark awk für Datenanalyseaufgaben sein kann. Sie können ähnliche Techniken verwenden, um Protokolldateien zu verarbeiten, Systemdaten zu analysieren oder mit jeder strukturierten Textdatei unter Linux zu arbeiten.
Zusammenfassung
In diesem Lab haben Sie die wesentlichen Funktionen der Linux-Textverarbeitung mithilfe des leistungsstarken Befehlszeilen-Werkzeugs awk gelernt. Sie haben mit den Grundlagen der Erstellung und des Ansehens strukturierter Datendateien begonnen und sich Schritt für Schritt zu immer fortschrittlicheren Techniken hin entwickelt.
Zu den Schlüsselkompetenzen, die Sie in diesem Lab erworben haben, gehören:
- Das Verständnis der grundlegenden Syntax und Funktionalität von
awk - Das Extrahieren bestimmter Spalten aus tabellarischen Daten
- Das Filtern von Daten basierend auf numerischen Bedingungen
- Das Durchführen von Berechnungen und das Generieren formatierter Berichte
- Das Verwenden von
awkfür praktische Datenanalyseaufgaben
Diese Textverarbeitungskompetenzen sind für alle, die in einer Linux-Umgebung mit Daten arbeiten, unschätzbar wertvoll - vom Systemadministrator, der Protokolldateien analysiert, bis hin zum Datenanalysten, der Erkenntnisse aus großen Datensätzen gewinnt. Die Fähigkeit, Textdaten direkt von der Befehlszeile aus schnell zu manipulieren und zu analysieren, ohne die Notwendigkeit spezieller Tools, ist eine leistungsstarke Fähigkeit, die Ihre Produktivität in einer Linux-Umgebung erheblich verbessern kann.
Wenn Sie Ihre Linux-Reise fortsetzen, sollten Sie auch andere Textverarbeitungstools wie sed, grep und cut erkunden. Diese ergänzen awk und können für noch leistungsfähigere Datenmanipulationsworkflows kombiniert werden.



