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.txtDer 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.txtDas 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.txtDer SED -Befehl hat mehrere Abschnitte; Jeder bezeichnet eine bestimmte Aufgabe:
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.txtAlternative 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.txtWir 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.txtEine 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.txtAbschluss
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.