SED Weißespace entfernen

SED Weißespace entfernen
Das Entfernen von Whitespaces in Dokumenten ist ein wesentlicher Formatierungsschritt, der erforderlich ist, um das Gesamtlayout eines Textes zu verbessern und sicherzustellen, dass die Daten sauber und ordentlich sind. Es hilft, nur die erforderlichen Daten zu speichern und unnötige führende und nachverfolgende Räume loszuwerden. Im Folgenden finden Sie einige Szenarien, in denen Sie möglicherweise Weißespaces entfernen müssen:
  • Zum formatieren des Quellcode
  • Zum Reinigen von Daten
  • Zur Vereinfachung der Befehlszeilenausgabe

Wenn wir über die Führung von Whitespaces sprechen, sind sie relativ leicht zu erkennen, da sie zu Beginn des Textes sind. Es ist jedoch nicht einfach, die nachverfolgenden Whitespaces zu erkennen. Das gleiche gilt für Doppelräume, die manchmal auch schwer zu erkennen sind. Es wird alles schwieriger, wenn Sie alle führenden und nachverfolgenden Weißespaces aus einem Dokument mit Tausenden von Linien entfernen müssen.

Um Whitespaces aus Ihrem Dokument zu entfernen, können Sie verschiedene Werkzeuge wie awk, SED, Schnitt und TR verwenden. In einigen anderen Artikeln haben wir die Verwendung von awk bei der Entfernung der Whitespaces besprochen. In diesem Artikel werden wir die Verwendung von SED zum Entfernen von Whitespaces aus den Daten diskutieren.

Sie werden lernen, wie Sie SED verwenden, um:

  • Entfernen Sie alle weißen Räume
  • Entfernen Sie führende Weißespace
  • Entfernen Sie nachverfolgende Weißespaien
  • Entfernen Sie sowohl führende als auch nachlaufende Weißespace
  • Ersetzen Sie Multi -Räume durch einen einzelnen Raum

Wir werden die Befehle auf Ubuntu 20 ausführen.04 FOSSA FOSSA. Sie können auch dieselben Befehle auf anderen Linux -Verteilungen ausführen. Wir werden die Standard -Ubuntu -Terminalanwendung zum Ausführen der Befehle verwenden. Verwenden Sie zum Öffnen des Terminals die Tastaturverknüpfung von Strg+Alt+T.

Was ist sed

SED (steht für Stream Editor) ist ein sehr leistungsstarkes und praktisches Dienstprogramm unter Linux, mit dem wir grundlegende Textmanipulationen auf den Eingabestreams ausführen können. Es ist kein Texteditor, aber es hilft, Text zu manipulieren und zu filtern. Es empfängt die Eingangsströme und bearbeitet sie gemäß den Anweisungen des Benutzers und druckt dann den transformierten Text auf den Bildschirm.

Mit SED können Sie:

  • Text auswählen
  • Suchtext
  • Text einfügen
  • Text ersetzen
  • Text löschen

Verwenden von SED, um Weißspace zu entfernen

Wir werden die folgende Syntax verwenden, um Weißespace aus dem Text zu entfernen:

s /regexp /Ersatz /Flags

Wo

  • S/: Ist Substitutionsausdruck
  • Regexp: Ist ein regelmäßiger Ausdruck, der übereinstimmt
  • Ersatz: Ist die Ersatzzeichenfolge
  • Flaggen: Wir werden nur das G -Flag "G" verwenden, um die Ersatztubstitution in jeder Zeile weltweit zu ermöglichen

Reguläre Ausdrücke

Einige der regulären Ausdrücke, die wir hier verwenden werden, sind:

  • ^ Übereinstimmungen Beginn der Linie
  • $ Streichhölzer das Ende der Linie
  • + entspricht einem oder mehreren Vorkommen des vorhergehenden Charakters
  • * entspricht null oder mehr Vorkommen des vorhergehenden Charakters.

Für den Demonstrationszweck verwenden wir die folgende Beispieldatei mit dem Namen "TestFile".

Zeigen Sie alle Whitespaces in einer Datei an

Um alle Whitespaces in Ihrer Datei zu finden, leiten Sie den Befehl Ausgabe des CAT in den Befehl TR wie folgt ein:

$ cat Testfile | tr "" "*" | tr "\ t" "&"

Dieser Befehl ersetzt alle Whitespaces in Ihrer Datei durch (*) Symbol, wodurch alle Whitespaces leichter erkennen, ob sie einzeln, mehrere, führende oder nachfolgende Weißespaces sind.

Im folgenden Screenshot sehen Sie, dass die Whitespaces durch * Symbol ersetzt werden.

Entfernen Sie alle Whitespaces (einschließlich Leerzeichen und Registerkarten)

In einigen Fällen müssen Sie alle Whitespaces aus den Daten entfernen, ich.e. Führung, Nachfolger und die Whitespaces zwischen den Texten. Der folgende Befehl entzieht alle Whitespaces aus der „Testdatei“.

$ cat Testfile | sed -r 's/\ s+// g'

Notiz: SED verändert Ihre Dateien nicht, es sei denn, Sie speichern die Ausgabe in der Datei.

Ausgang:

Nach dem Ausführen des obigen Befehls erschien die folgende Ausgabe, die zeigt, dass alle Whitespaces aus dem Text entfernt wurden.

Sie können auch den folgenden Befehl verwenden, um zu überprüfen, ob alle Whitespaces entfernt wurden.

$ cat Testfile | sed -r 's/\ s+// g' | tr "" "*" | tr "\ t" "&"

Aus der Ausgabe können Sie erkennen, dass dies kein (*) Symbol ist, was bedeutet, dass alle Whitespaces entfernt wurden.

So entfernen Sie alle Whitespaces, jedoch nur aus einer bestimmten Zeile (sagen wir Zeilennummer 2), Sie können den folgenden Befehl verwenden:

$ cat Testfile | SED -r '2S/\ S+// G'

Entfernen Sie alle führenden Whitespaces (einschließlich Leerzeichen und Registerkarten)

Verwenden Sie den folgenden Befehl:

$ cat Testfile | sed 's/^[\ t]*//'

Ausgang:

Nach dem Ausführen des obigen Befehls erschien die folgende Ausgabe, die anzeigt, dass alle führenden Whitespaces aus dem Text entfernt wurden.

Sie können auch den folgenden Befehl verwenden, um zu überprüfen, ob alle führenden Whitespaces entfernt wurden:

$ cat Testfile | sed 's/^[\ t]*//' | tr "" "*" | tr "\ t" "&"

Aus der Ausgabe können Sie feststellen, dass es am Anfang der Linien kein (*) Symbol gibt, was überprüft.

Um die führenden Whitespaces nur aus einer bestimmten Zeile zu entfernen (sagen wir Zeilennummer 2), können Sie den folgenden Befehl verwenden:

$ cat Testfile | sed '2S/^[\ t]*//'

Entfernen Sie alle nachfolgenden Weißespaien (einschließlich Leerzeichen und Registerkarten)

Verwenden Sie den folgenden Befehl:

$ cat Testfile | sed 's/[\ t]*$ //'

Ausgang:

Die folgende Ausgabe erschien nach dem Ausführen des obigen Befehls, aus dem alle nachverfolgenden Weißespaces aus dem Text entfernt wurden.

Sie können auch den folgenden Befehl verwenden, um zu überprüfen.

$ cat Testfile | sed 's/[\ t]*$ //' | tr "" "*" | tr "\ t" "&"

Aus der Ausgabe können Sie feststellen, dass am Ende der Linien kein (*) Symbol vorhanden ist, was überprüft.

So entfernen Sie die nachverfolgenden Whitespaces von nur einer bestimmten Zeile (sagen wir Zeilennummer 2), Sie können den folgenden Befehl verwenden:

$ cat Testfile | sed '2S/[\ t]*$ //'

Entfernen Sie sowohl führende als auch nachlaufende Weißespace

So entfernen Sie alle Whitespaces sowohl vom Start als auch vom Ende jeder Zeile.e. Verwenden Sie den folgenden Befehl, die sowohl führende als auch nachfolgende Weißespaces): den folgenden Befehl verwenden:

$ cat Testfile | sed 's/^[\ t]*//; s/[\ t]*$ //'

Ausgang:

Nach dem Ausführen des obigen Befehls erschien die folgende Ausgabe, die zeigt, dass sowohl die führenden als auch die nachfolgenden Weißespaces aus dem Text entfernt wurden.

Sie können auch den folgenden Befehl verwenden, um zu überprüfen.

$ cat Testfile | sed 's/^[\ t]*//; s/[\ t]*$ //' | tr "" "*" | tr "\ t" "&"

Aus der Ausgabe können Sie feststellen, dass es kein (*) Symbol am Anfang oder am Ende der Linien gibt, was überprüft.

So entfernen Sie sowohl die führenden als auch die nachfolgenden Weißespaces von nur einer bestimmten Zeile (sagen wir Zeilennummer 2), Sie können den folgenden Befehl verwenden:

$ cat Testfile | sed '2S/^[\ t]*//; 2S/[\ t]*$ //'

Ersetzen Sie mehrere Weißespace durch ein einzelnes Weißespace

In einigen Fällen befinden sich an derselben Stelle in der Datei mehrere Weißespaces, aber Sie benötigen nur einzelne Weißespace. Sie können dies tun, indem Sie diese mehreren Räume durch SED durch einen einzelnen Raum ersetzen.

Der folgende Befehl ersetzt alle mehrere Whitespaces durch einzelne Whitespace aus jeder Zeile in der „Testdatei“.

$ cat Testfile | sed 's/[] \+//g'

Ausgang:

Nach dem Ausführen des obigen Befehls wurde die folgende Ausgabe angezeigt, die zeigt, dass die mehrfachen Whitespaces durch das einzelne Weißespace ersetzt wurden.

Sie können auch den folgenden Befehl verwenden, um zu überprüfen, ob mehrere Whitespace durch ein einzelne Weißespace ersetzt werden:

$ cat Testfile | sed 's/[] \+//g' | tr "" "*" | tr "\ t" "&"

Aus der Ausgabe können Sie das einzelne (*) Symbol an jedem Ort sehen, das überprüft.

Hier ging es also darum, die Whitespaces aus Ihren Daten mit SED zu entfernen. In diesem Artikel haben Sie gelernt, wie SED mithilfe von SED alle Weißespaces aus Ihren Daten entfernen, nur die führenden oder nachfolgenden Whitespace entfernen und sowohl führende als auch nachlaufende Weißespace entfernen. Sie haben auch gelernt, wie man Multi -Räume durch einen einzelnen Raum ersetzt. Es ist jetzt für Sie einfach, Weißespace aus einer Datei mit Hunderten oder Tausenden von Zeilen zu entfernen.