NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
DE

Linux-Befehle und Shell-Fähigkeiten

sed: Streams bearbeiten, ohne einen Editor zu öffnen

sed bearbeitet seitwärts: Ganze Textströme durchlaufen es, kommen transformiert heraus und es öffnet sich kein Editor. Sein Ruf rührt von -i her, das eine einzeilige Ersetzung in einen Stapelvorgang für Tausende von Dateien umwandelt, und von den Katastrophengeschichten von Administratoren, die es ohne Backup-Suffix ausgeführt haben. Der sichere Arbeitsablauf ändert sich nie: Führen Sie die sichtbare Ersetzung aus, bestätigen Sie die Ausgabe, fügen Sie dann -i mit einem Suffix hinzu und behalten Sie den Exit-Code bei.

Kernpunkte

  • Vorschau vor dem Festschreiben: Die Datei sed -n '10,20p' zeigt einen Zeilenbereich an, und dieselbe Kombination aus -n und p druckt nur Zeilen, die mit einem regulären Ausdruck oder einer Adresse übereinstimmen.
  • Ersetzen Sie durch Flags, die das tun, was Sie meinen: s/old/new/g für alle Übereinstimmungen, eine Zahl wie 2g nur für die Sekunde und -E für erweiterten regulären Ausdruck ohne eine Seite mit Backslash-Escapezeichen.
  • Direkte Änderungen erhalten ein Suffix, keine Ausnahmen: sed -i.bak 's/http:/https:/g'-App führt neben jeder Änderung ein gleichnamiges Backup; Dieses Suffix hat mehr Bereitstellungen gerettet als der Rückgängig-Verlauf eines jeden Editors.
  • Trennzeichen sind kostenlos: s|/var/www|/srv/app|g (oder s#...#g) vermeidet Slash-Escape-Kämpfe, wenn Ihr Muster voller Pfade ist.
  • -i ist nicht atomar: Ein Absturz oder ein fehlerhafter Regex mitten im Batch hinterließ einmal halb neu geschriebene Dateien, sodass Massenjobs gegen Kopien oder Git-verfolgte Bäume ausgeführt werden, niemals gegen die einzige Kopie.
  • GNU und BSD sed sind sich über -i nicht einig: BSD benötigt das Suffix vor dem Skript (sed -i '' funktioniert unter macOS, ist keine Linux-Syntax), was ein weiterer Grund dafür ist, dass Portabilitätsskripte -i vollständig vermeiden.
  • Löschen und Isolieren sind ehrliche Verben: 'd' entfernt übereinstimmende Zeilen (sed '/^#/d' entfernt Kommentare) und -n mit einem Bereich isoliert einen Abschnitt; beides liest sich besser als clevere Substitutionen.
  • Alles, was über einzeilige Bearbeitungen, wörtliche mehrzeilige Blöcke oder zustandsbehaftete Verknüpfungen hinausgeht, gehört in awk oder ein echtes Skript; Wenn man sed dazu zwingt, Programmierarbeit zu leisten, entstehen unleserliche Einzeiler.

Praxisnotiz

Mein erstes sed -i ohne .bak-Suffix traf kurz vor der nachmittäglichen Verkehrsspitze auf eine Produktions-Nginx-Konfiguration. Seitdem trägt jede In-Place-Bearbeitung ein Backup-Suffix, und ich lese die Probelaufausgabe, bevor -i überhaupt in die Nähe des Befehls kommt.

Häufige Fragen

Wie bearbeite ich nur Zeilen, die mit etwas anderem übereinstimmen?

Adressieren Sie sie: sed '/cache/s/true/false/' ändert true nur in Cache-Zeilen in false und Bereiche wie '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' ändern den Gültigkeitsbereich auf Blöcke; Zuerst steht die Adresse, dann der Befehl.

Warum stimmt sed nicht mit den Zeilenenden in einer unter Windows bearbeiteten Datei überein?

Diese Zeilen enden mit Wagenrücklaufzeichen, die die „$“-Anker nicht erwarten; Entfernen Sie sie zuerst mit tr oder normalisieren Sie sie auf dem Weg hinein, und mehrzeilige Inhalte gehören immer noch in awk oder Perl mit -0777.

Ist sed für einfache Ersetzungen schneller als awk?

Geringfügig und irrelevant; Beide werden bei Dateien in Konfigurationsgröße in Millisekunden abgeschlossen. Wählen Sie nach Lesbarkeit, denn ein Kollege muss Ihren Einzeiler in sechs Monaten entwirren.

Kann ich mit sed ganze Konfigurationsblöcke einfügen?

Ja: „a“ wird danach angehängt, „i“ wird davor eingefügt und „c“ ersetzt die Zeile, aber der eingefügte Text bleibt einfach und dient einem einzigen Zweck. Echte Blöcke gehören in eine Vorlagendatei oder einen ordnungsgemäßen Bereitstellungsschritt.

Wie Kinetikatech bei linux-befehle und shell-fähigkeiten hilft

Ehrlich gesagt kommen die meisten Teams zu uns, nachdem sie es erst selbst versucht haben: Die Befehle und Skriptgewohnheiten, die darüber entscheiden, ob ein Administrator einen Server betreibt oder ihn bekämpft: Suchen, Transformieren, Übertragen und Überwachen von Texten und Prozessen mit den Tools, die in jeder Basisinstallation enthalten sind. Unser Linux-Server-Sicherheit und Serververwaltung-Service existiert, damit Sie linux-befehle und shell-fähigkeiten nicht auf die harte Tour lernen müssen: Wir übernehmen Einrichtung, Überwachung und die Überraschungen um 3 Uhr nachts.

Mit einem Ingenieur sprechen

Serverproblem? Gehackte Website? Langsame Seite?

Kritische Störungen in 30 Minuten beantwortet — rund um die Uhr, 7 Tage die Woche.

Notfall-Support anfordern support@kinetikatech.com