15 nützliche SED -Schabat -Tipps und Tricks für tägliche Linux -Systemverabreichungsaufgaben

15 nützliche SED -Schabat -Tipps und Tricks für tägliche Linux -Systemverabreichungsaufgaben

Jeder Systemadministrator muss sich täglich mit einfachen Textdateien befassen. Zu wissen, wie man bestimmte Abschnitte anzeigt, wie Sie Wörter ersetzen und wie Sie Inhalte aus diesen Dateien filtern, sind Fähigkeiten, die Sie zur Hand haben müssen, ohne eine Google -Suche durchführen zu müssen.

15 nützliche 'SED' Befehlstipps und Tricks für Linux

In diesem Artikel werden wir SED, den bekannten Stream-Editor, überprüfen und 15 Tipps zur Verwendung teilen, um die zuvor genannten Ziele zu erreichen, und mehr.

1. Anzeigen einer Reihe von Zeilen eines Dokuments

Tools wie Kopf und Schwanz ermöglichen es uns, den Boden oder die Oberseite einer Datei anzusehen. Was ist, wenn wir einen Abschnitt in der Mitte anzeigen müssen? Der folgende SED-One-Liner gibt Linien zurück 5 durch 10 aus meine Datei.txt:

# sed -n '5,10p' myfile.txt 

2. Anzeigen der gesamten Datei mit Ausnahme eines bestimmten Bereichs

Auf der anderen Seite ist es möglich, dass Sie die gesamte Datei mit Ausnahme eines bestimmten Bereichs drucken möchten. Zeilen ausschließen 20 durch 35 aus meine Datei.txt, Tun:

# sed '20, 35d 'myfile.txt 

3. Betrachten von nicht aufeinanderfolgenden Linien und Bereichen

Es ist möglich, dass Sie an nicht konsequativer Linien oder an mehr als einem Bereich interessiert sind. Lassen Sie uns Zeilen anzeigen 5-7 Und 10-13 aus meine Datei.txt:

# sed -n -e '5,7p' -e '10, 13p 'myfile.txt 

Wie Sie sehen können, die -e Die Option ermöglicht es uns, eine bestimmte Aktion (in diesem Fall Druckzeilen) für jeden Bereich auszuführen.

4. Ersetzen von Wörtern oder Zeichen (grundlegende Substitution)

Jede Instanz des Wortes zu ersetzen Ausführung mit Geschichte In meine Datei.txt, Tun:

# sed 's/Version/Story/g' myfile.txt 

Darüber hinaus möchten Sie möglicherweise in Betracht ziehen gi anstatt G Um den Charakterfall zu ignorieren:

# sed 's/Version/Story/gi' myfile.txt 

Um mehrere leere Räume durch einen einzelnen Speicherplatz zu ersetzen, verwenden wir die Ausgabe von IP -Routenshow und eine Pipeline:

# IP -Route Show | sed 's/ *// g' 

Vergleiche die Ausgabe von IP -Routenshow mit und ohne die Pipeline:

Ersetzen Sie Wörter oder Zeichen in der Datei

5. Wörter oder Zeichen in einem Bereich ersetzen

Wenn Sie Wörter nur innerhalb eines Zeilenbereichs ersetzen möchten (30 durch 40, zum Beispiel) können Sie:

# SED '30, 40 s/Version/Story/G 'Myfile.txt 

Natürlich können Sie eine einzelne Zeile über ihre entsprechende Zahl anstelle eines Bereichs angeben.

6. Verwenden von regulären Ausdrücken (erweiterte Substitution) - i

Manchmal werden Konfigurationsdateien mit Kommentaren geladen. Dies ist zwar sicherlich nützlich, aber es ist möglicherweise hilfreich, manchmal nur die Konfigurationsrichtlinien anzuzeigen, wenn Sie sie alle auf einen Blick anzeigen möchten.

Um leere Linien zu entfernen oder solche, die mit beginnen # Aus der Apache -Konfigurationsdatei: DO:

# sed '/^# \ |^$ \ | *#/d 'httpd.Conf 

Das Kartonschild gefolgt vom Zahlenzeichen (^#) zeigt den Beginn einer Linie an, während ^$ repräsentiert leere Zeilen. Die vertikalen Balken weisen auf booleschen Operationen hin, während der Rückwärtsstrahl verwendet wird, um den vertikalen Balken zu entkommen.

In diesem speziellen Fall hat die Apache -Konfigurationsdatei Zeilen mit #'S Nicht am Anfang einiger Zeilen, also *# wird verwendet, um diese auch zu entfernen.

7. Verwenden regulärer Ausdrücke (fortgeschrittener Substitution) - II

Um ein Wort zu ersetzen, das mit Großbuchstaben oder Kleinbuchstaben durch ein anderes Wort beginnt, können wir auch SED verwenden. Lassen Sie uns das Wort ersetzen, um zu veranschaulichen Reißverschluss oder Reißverschluss mit rar in meine Datei.txt:

# sed 's/[zz] ip/rar/g' myfile.txt 

Verpassen Sie nicht: Verwenden Sie awk mit regulären Ausdrücken, um Text in Dateien zu filtern

8. Zeilen anzeigen, die mit einem bestimmten Muster enthalten sind

Eine weitere Verwendung von sed besteht darin, die Zeilen aus einer Datei zu drucken, die einem bestimmten regulären Ausdruck übereinstimmt. Zum Beispiel können wir daran interessiert sein, die Autorisierungs- und Authentifizierungsaktivitäten anzuzeigen, die stattgefunden haben 2. Juli, gemäß /var/log/sicher Melden Sie sich in a an Centos 7 Server.

In diesem Fall ist das Muster zu suchen ist 2. Juli Zu Beginn jeder Zeile:

# sed -n '/^Jul 1/p'/var/log/sicher 
Anzeigenprotokolle (Zeilen) des bestimmten Datums anzeigen

9. Einfügen von Leerzeichen in Dateien

Mit sed, Für jede nicht leere Zeile in einer Datei können wir auch Leerzeichen (leere Zeilen) einfügen. Setzen Sie eine leere Linie jede andere Linie in ein in LIZENZ, Eine einfache Textdatei, do:

# sed g myfile.txt 

Um zwei leere Zeilen einzufügen, tun Sie:

# sed 'g; g' myfile.txt 

Fügen Sie ein hinzu Großbuchstaben g getrennt durch ein Semikolon, wenn Sie weitere leere Zeilen hinzufügen möchten. Das folgende Bild zeigt das in diesem Tipp beschriebene Beispiel:

Stellen Sie Leerzeichen in die Datei ein

Dieser Tipp kann nützlich sein, wenn Sie eine große Konfigurationsdatei inspizieren möchten. Einfügen eines leeren Platz.

10. Dos2unix mit Inline -Bearbeitung emulieren

Der dos2unix Programm konvertiert Klartextdateien von Windows/Mac -Formatierung in UNIX/Linux, wobei versteckte neue Zeilenzeichen entfernt werden, die von einigen Texteditoren eingefügt wurden, die in diesen Plattformen verwendet wurden. Wenn es nicht in Ihrem Linux -System installiert ist, können Sie seine Funktionalität nachahmen sed anstatt es zu installieren.

Im Bild links sehen wir mehrere DOS -Newline -Charaktere (^M), die später entfernt wurden mit:

# sed -i 's/\ r //' myfile.txt 
Verdeckte Textdateien von Windows zu Linux

Bitte beachten Sie, dass die -ich Option geben an. Anschließend werden Änderungen nicht auf den Bildschirm zurückgegeben, sondern in der Datei gespeichert.

Notiz: Sie können DOS -Newline -Zeichen einfügen, während Sie eine Datei in VIM -Editor bearbeiten Strg+v Und Strg+m.

11. Einstellungsbearbeitungsbereitung und Unterstützung der Originaldatei

Im vorherigen Tipp haben wir verwendet sed So ändern Sie eine Datei, speichert jedoch die Originaldatei nicht. Manchmal ist es eine gute Idee, eine Sicherungskopie der Originaldatei für den Fall zu speichern.

Geben Sie dazu ein Suffix an, das dem folgt -ich Option (in einzelnen Zitaten), mit der die Originaldatei umgebracht werden kann.

Im folgenden Beispiel werden wir alle Instanzen von ersetzen Das oder Das (Fall ignorieren) damit in meine Datei.txt, und wir werden die Originaldatei als speichern als meine Datei.txt.orig.

Schließlich werden wir das Diff -Dienstprogramm verwenden, um die Unterschiede zwischen beiden Dateien zu identifizieren:

# sed -i ''.orig "s/this/das/gi 'myfile.txt 
Verwenden Sie SED, um die Originaldatei zu bearbeiten und zu sichern

12. Wörterpaare von Wörtern wechseln

Nehmen wir an, Sie haben eine Datei mit vollständigen Namen im Format Vorname, Familienname, Nachname. Um die Datei angemessen zu verarbeiten, möchten Sie möglicherweise wechseln Familienname, Nachname Und Vorname.

Wir können das mit tun sed ziemlich einfach:

# sed 's/^\ (.*\), \ (.*\) $ /\, /g 'Namen.txt 
Wörter in Datei wechseln

Im Bild oben können wir sehen, dass Klammern, die Sonderzeichen sind, entkommen müssen, ebenso wie die Zahlen 1 Und 2.

Diese Zahlen repräsentieren die hervorgehobenen regulären Ausdrücke (die in Klammern erscheinen müssen):

  1. 1 repräsentiert den Beginn jeder Aufstellung bis zum Komma.
  2. 2 ist ein Platzhalter für alles, was das Komma bis zum Ende der Linie ist.

Der gewünschte Ausgang ist im Format angegeben SecondColumn (Familienname, Nachname) + Komma + Raum + Erste Spalte (Vorname). Fühlen Sie sich frei, es in das zu ändern, was Sie wünschen.

13. Wörter nur dann ersetzen, wenn eine separate Übereinstimmung gefunden wird

Manchmal ist das Ersetzen aller Fälle eines bestimmten Wortes oder ein paar zufälligen wenigen nicht genau das, was wir brauchen. Vielleicht müssen wir den Ersatz ausführen, wenn eine separate Übereinstimmung gefunden wird.

Zum Beispiel möchten wir vielleicht ersetzen Start mit stoppen Nur wenn die Wortdienste in derselben Zeile gefunden werden. In diesem Szenario wird Folgendes passieren:

Wir müssen bei der Arbeit feiern, aber denken wir daran, zuerst alle Dienste zu beginnen. 

In der ersten Zeile, Start wird nicht ersetzt durch stoppen Da die Wortdienste in dieser Zeile nicht erscheint, im Gegensatz zur zweiten Zeile.

# sed '/dienste/s/start/stop/g' msg.txt 
Wörter in der Datei ersetzen

14. Zwei oder mehr Substitutionen gleichzeitig durchführen

Sie können zwei oder mehr Substitutionen mit einer einzigen kombinieren sed Befehl. Ersetzen wir die Wörter, die und eine Linie in meine Datei.txt mit diesem und versen jeweils.

Beachten Sie, wie dies durch Verwendung eines gewöhnlichen Gebrauchs erfolgen kann sed Substitutionskommando gefolgt von einem Semikolon und einem zweiten Substitutionskommando:

# sed -i 's/that/this/gi; s/line/verse/gi' myfile.txt 

Dieser Tipp ist im folgenden Bild dargestellt:

Ersetzen Sie mehrere Wörter in der Datei

15. SED und andere Befehle kombinieren

Natürlich, sed kann mit anderen Tools kombiniert werden, um leistungsfähigere Befehle zu erstellen. Lassen Sie uns beispielsweise das angegebene Beispiel in verwenden Tipp Nr. 4 und extrahieren Sie unsere IP -Adresse aus der Ausgabe der IP -Route Befehl.

Wir werden zunächst nur die Zeile drucken, in der das Wort das Wort src Ist. Dann werden wir mehrere Räume in eine einzige umwandeln. Schließlich werden wir die schneiden 9 Feld (unter Berücksichtigung eines einzelnen Speicherplatzes als Feldabscheider), wo die IP -Adresse lautet:

# IP -Route Show | sed -n '/src/p' | sed -e 's/ *// g' | Schnitt -d "-F9 

Das Bild unten zeigt jeden Schritt des obigen Befehls:

Kombinieren Sie SED mit anderen Befehlen

Zusammenfassung

In diesem Leitfaden haben wir geteilt 15 SED -Tipps und Tricks Um Ihnen bei Ihren täglichen Systemverwaltungsaufgaben zu helfen. Gibt es einen anderen Tipp, den Sie regelmäßig verwenden und möchten mit uns und dem Rest der Community teilen möchten?

Wenn ja, können Sie uns gerne mit dem folgenden Kommentarformular wissen. Fragen und Kommentare sind auch willkommen - wir freuen uns darauf, von Ihnen zu hören!

Verpassen Sie nicht: Mastering Linux 'awk' Befehl mit Tipps und Tricks