AWK Leerzeichen kürzen
„Wenn man in der IT-Industrie arbeitet, kann man auf Tausende von Dateien stoßen, die viele Codezeilen oder riesige Datenmengen enthalten. Obwohl die Daten selbst einen Beitrag zur Dateigröße leisten können, erhöhen auch Leerzeichen die Größe erheblich. Mit der erhöhten Dateigröße könnten Probleme auftreten, wenn man diese Dateien speichert oder sie an Kollegen überträgt. Daher ist es wichtig, diese zu entfernen, um die Dateigröße besser zu kontrollieren, aber zunächst sollten wir sie im Detail verstehen.“
Was ist ein Whitespace?
Whitespace ist der Raum zwischen zwei druckbaren Zeichen. Es kann sich entweder innerhalb einer horizontalen Linie oder vertikal zwischen Linien befinden. Mit anderen Worten, der Raum zwischen Wörtern, alle Leerzeilen, das nbsp-Tag sowie Tabs können als Whitespace betrachtet werden. Die Leerzeichen am Anfang und/oder am Ende der Zeilen werden ebenfalls als Whitespace angesehen.
Um die Datenintegrität zu gewährleisten, schreiben Programmierer oft Code, der dafür verantwortlich ist, diese Leerzeichen beim Speichern von Daten zu entfernen. Die folgenden Fälle können die Entfernung von Leerzeichen auslösen:
- Reformatierung/Refaktorisierung des Quellcodes
- Daten bereinigen
- Vereinfachen Sie alle Befehlszeilenausgaben
- Dateigröße reduzieren
Es ist möglich, Leerzeichen manuell zu entfernen, wenn es nur eine Handvoll Datenzeilen in der Datei gibt. Aber wenn die Datei Hunderte von Zeilen enthält, kann es sehr schwierig werden, sie manuell zu entfernen. Um dies zu überwinden, können wir die vielen verfügbaren Kommandozeilenwerkzeuge nutzen, z. B. sed, cut, tr und awk. Von diesen ist awk der leistungsstärkere Befehl. Lassen Sie uns dies weiter erkunden.
Was ist Awk?
Awk ist eine sehr leistungsstarke Skriptsprache, die zur Datenmanipulation und Berichtserstellung verwendet wird. Der Awk-Befehl ist die Abkürzung für die ersten Initialen der drei Schöpfer Aho, Weinberger und Kernighan. Awk ermöglicht es seinen Benutzern, Variablen, Zeichenfolgen, numerische Funktionen und mathematische Operatoren zu definieren sowie formatierte Berichte zu erstellen, unter vielen anderen.
In diesem Artikel werden wir die Verwendung des awk-Befehls zum Zuschneiden von Leerzeichen aus Ihren Dateien untersuchen. Nach dem Durchgehen des Leitfadens wissen Sie, wie man:
- Entfernen Sie alle Leerzeichen in einer Datei.
- Entfernen Sie sowohl die führenden als auch die nachfolgenden Leerzeichen.
- Entfernen Sie alle führenden Leerzeichen.
- Entfernen Sie alle nachfolgenden Leerzeichen.
- Ersetzen Sie mehrere Leerzeichen durch ein einzelnes Leerzeichen.
Die in diesem Artikel dargestellten Szenarien werden auf dem Ubuntu 22.04 Jammy Jellyfish System durchgeführt. Diese Befehle sind auch auf anderen Distributionen ausführbar.
Beispieldatei
Für diesen Leitfaden verwenden wir eine Textdatei mit dem Namen „asd.txt“. Der Platzhalterinhalt der Beispieldatei sieht folgendermaßen aus:
Jetzt lassen Sie uns anfangen.
Wie man alle Leerzeichen in Ihrer Datei angezeigt bekommt?
Um Leerzeichen besser zu verstehen, schauen wir uns zuerst an, wie wir Leerzeichen in einer Datei identifizieren können. Dazu müssen Sie die Ausgabe des cat-Befehls mit dem tr-Befehl wie folgt leiten:
$cat asd.txt | tr “ ” “*” | tr “\t” “&”Dieser Befehl ersetzt Leerzeichen durch Asterisken und Tabulatoren durch das “& ”-Symbol. Sobald dies ausgeführt wird, können Sie alle Leerzeichen in Ihrer Datei wie folgt sehen:
Lass uns nun die Verwendung des awk-Befehls erkunden.
Alle Leerzeichen entfernen
Für unser erstes Szenario entfernen wir alle Leerzeichen aus unserer Beispieldatei. Um dies zu erreichen, müssen wir die Ausgabe des cat-Befehls an den awk-Befehl weiterleiten:
$ cat asd.txt | awk '{ gsub(/ /,""); print }'
Hier :
- gsub steht für globale Ersetzung, die zur Ersetzung von Leerzeichen verwendet wird.
- Die doppelten Schrägstriche (/ /) repräsentieren den Leerraum.
- Die doppelten Anführungszeichen werden verwendet, um die Strings zu kürzen.
Mit dem obigen Befehl ersetzen wir also alle Leerzeichen (/ /) durch nichts (“ ”). Anhand der Ausgabe des obigen Befehls können Sie sehen, dass alle Leerzeichen entfernt wurden.
Führen von Anfangs- und Endleerzeichen aus Ihrem Dokument
Aus der letzten Ausgabe können wir sehen, dass die Leerzeichen entfernt wurden, während Tabs und leere Zeilen zurückblieben. Wir können den im letzten Beispiel verwendeten Befehl aktualisieren, um sich um die vorstehenden und nachstehenden Leerzeichen sowie um Tabs wie folgt zu kümmern:
$cat asd.txt | awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }'Mit den Elementen aus dem vorherigen Befehl können Sie überprüfen, ob die führenden und nachfolgenden Leerzeichen entfernt wurden.
$cat asd.txt | awk '{ sub(/^[ \t]+|[ \t]/, ""); print }' | tr " " "*" | tr "\t" "&"Hier sind die Befehle, die Sie verwenden können, um diese Abstände separat zu entfernen.
Nur führende Leerzeichen entfernen
$cat asd.txt | awk '{ sub(/^[ \t]+/, ""); print }'Nur das Entfernen von nachfolgenden Leerzeichen
$cat asd.txt | awk '{ sub(/[ \t]+$/, ""); print }'Bonus: Mehrere Leerzeichen durch ein einziges Leerzeichen ersetzen
Um mehrere Leerzeichen durch ein einziges oder durch nichts zu ersetzen, können Sie den awk-Befehl wie folgt verwenden:
$cat asd.txt | awk '{ gsub(/[ ]+/,””); print }'
Mit dem tr-Befehl können wir sehen, dass die Leerzeichen entfernt wurden.
Fazit
So haben wir mit diesen Demonstrationen verschiedene Möglichkeiten erkundet, wie wir den awk-Befehl verwenden können, um die Leerzeichen zu trimmen. Ihre Entfernung könnte aus verschiedenen Gründen nützlich sein.
Wenn Sie bei der Verwendung auf Probleme stoßen, können Sie uns gerne über den Kommentarteil unten kontaktieren, und wir helfen Ihnen gerne.






