Ich habe ewig versucht, das herauszufinden. Zufällig muss ich es nicht mehr tun; Ich habe einen anderen Weg gefunden. Aber aus Gründen meiner geistigen Gesundheit würde ich die Antwort trotzdem gerne wissen.
Es ist ganz einfach, sed
einen Marker durch einen Text zu ersetzen. Was ich nicht herausfinden kann, ist, wie sed
man einen großen Textblock mit komplexen Formatierungen wie mehreren Zeilen, Tabulatorzeichen usw. einfügt. Wie macht man das? Ist sed
das Beste oder was?
Antworten:
Wenn Sie den Text an den Markierungen in einer Datei mit dem Namen /tmp/insert.txt einfügen möchten, können Sie diese Aufgabe wie folgt ausführen:
Der obige Befehl sed liest "Eingabedatei" und sucht nach MARKER. Wenn es gefunden wird, fügt es den Inhalt von /tmp/insert.txt in den Ausgabestream ein.
Wenn Sie möchten, dass der Marker selbst gelöscht wird, versuchen Sie Folgendes:
Beachten Sie, dass vor der schließenden Klammer "}" eine neue Zeile stehen muss.
Wie im ersten Befehl arbeitet der sed auf Linien mit dem MARKER. Es ersetzt MARKER durch nichts und liest dann /tmp/insert.txt ein
quelle
Ich würde
ex
für diese Art von Aufgabe verwenden, es sei denn, Sie haben wirklich einen Datenstrom. Ich würde dieex
Befehle in einem Dokument hier aufbewahren:Die Verwendung
ex
ist fürvi
oder fürvim
Benutzer von Vorteil : Sie kennen die Tastenanschläge für die Befehle bereits, obwohl Sie das Gefühl haben, blind zu bearbeiten. Sie können auch mehrere Adds oder globale Ersetzungen vornehmen, alles,vim
was im ':' - Modus möglich ist.quelle
Ich glaube, dieser Befehl ist das, wonach Sie suchen:
quelle
Hier ist eine vereinfachte Version von Bruce Edigers Antwort mit dem Änderungsbefehl, der eine Kombination aus Löschen und Anhängen darstellt.
quelle
Wenn Sie möchten, dass der Marker selbst gelöscht wird, versuchen Sie dies in einer Zeile:
oder
quelle