SED Ersetzen Sie Newline durch Platz

SED Ersetzen Sie Newline durch Platz
In Unix/Linux ist der SED -Befehl ein dediziertes Werkzeug zum Bearbeiten von Streams. Es kann verschiedene Vorgänge in einem Textstrom ausführen, z. Zum größten Teil wird SED verwendet, um Textinhalte zu finden und zu ersetzen.

In diesem Handbuch zeigen wir, dass wir Neulinen durch SED durch Platz ersetzen werden.

Verwenden von SED zum Ersetzen von Text

Schauen wir uns zunächst schnell die Ausführung von Basic Fund und Ersetzen mit SED an. Die gleiche Methode wird verwendet, wenn Neuleitungen durch Leerzeichen durch einige zusätzliche Optionen ersetzt werden. Die Befehlsstruktur lautet wie folgt:

$ sed -e 's ///'

Schauen Sie sich den folgenden Befehl an:

$ echo "The Quick Brown Fox" | SED -E 's/Quick/Fast/G'

Der Befehl echo druckt die Zeichenfolge zu STDOut. Der Stdout -Strom wird dann nach SED geleitet. Wir haben SED angewiesen, jede Instanz von schnell ersetzt durch schnelles Ersetzen zu ersetzen. Schließlich wird die Ausgabe auf dem Bildschirm gedruckt.

Neulinen durch Platz ersetzen

Zur Demonstration habe ich den folgenden Textdateistest erstellt.TXT mit mehreren Dummy -Inhalten:

$ CAT -Test.txt

Der SED -Befehl akzeptiert regelmäßige Ausdrücke für die Beschreibung verschiedener Muster. Wenn wir diese Funktion nutzen, werden wir Newline als \ n beschreiben. Versuchen wir, die Neulinge durch Whitespace zu ersetzen:

$ sed -e 's/\ n//g' Test.txt

Das funktionierte jedoch nicht wie erwartet. Um dieses Ziel zu erreichen, benötigen wir einige zusätzliche Optionen. Schauen Sie sich den folgenden Befehl an:

$ sed -e ': a; n; $!Ba; s/\ n//g 'Test.txt

Der SED -Befehl hat mehrere Abschnitte; Jeder bezeichnet eine bestimmte Aufgabe:

  • : A: Erstellt ein Etikett 'A'
  • N: Fängt die nächste Zeile zum Musterraum an
  • $!BA: Wenn nicht die letzte Zeile, kehrt zurück, um 'a' zu kennzeichnen
  • s/\ n//g: Findet und ersetzt Newline (\ n) durch Platz (//). Das Muster wird global abgestimmt (/g)

Der SED -Befehl schaltet die Schritte durch, bis sie die letzte Zeile erreicht und alle Zeichen durch den Raum ersetzen.

Anstelle dieses komplexen Befehls können wir die Dinge mit dem -Z -Flag vereinfachen, das SED für die Arbeit mit nullgetrennten Datensätzen angibt. Der Befehl würde so aussehen:

$ sed -z -e 's/\ n//g' Test.txt

Alternative Methoden

Während SED die Aufgabe gut ausführen kann, gibt es einige alternative Werkzeuge. In diesem Abschnitt werden wir kurz einige davon untersuchen.

Für das folgende Beispiel können wir den Befehl TR verwenden, um Newline durch Whitespace auf einfache Weise zu ersetzen:

$ tr '\ n "< test.txt

Wir können auch Perl verwenden, um den Job zu erledigen. Die folgende Syntax ähnelt auch dem, was wir mit SED verwendet haben (aber vereinfacht):

$ perl -p -e 's/\ n//' Test.txt

Eine andere Möglichkeit, Neuleitungen durch Whitespace zu ersetzen, besteht darin, den Befehl paste zu verwenden. Beachten Sie, dass es nur ein Zeichen entfernen kann:

$ paste -s -d "-Test.txt

Ähnlich wie bei SED kommt Linux mit einem anderen Werkzeug awk aus. Ähnlich wie bei SED kann es auch einige erweiterte Ersetzungen für den Eingang durchführen. Verwenden Sie für unseren Zweck den folgenden awk -Befehl:

$ awk 1 ors = "Test.txt

Abschluss

In dieser Anleitung wurde untersucht, wie wir Newline durch SED durch Platz ersetzen können. Es wurde auf zwei verschiedene Arten erreicht. Diese Anleitung enthält auch andere relevante Tools, mit denen wir Newline durch Whitespace ersetzen können.

Anstatt komplexe Befehle zu verwenden, die kaum zu merken sind, verwenden wir Bash Scripting, um viele Dinge unter Linux auszuführen. Obwohl es für eine gewisse Leistung garniert, lohnt sich die Flexibilität und die Benutzerfreundlichkeit. Erfahren Sie mehr über Bash Scripting für Anfänger.