Wie ersetzt man, ohne eine Zwischendatei in sed zu erstellen?

7

Ich habe etwas mit dem Befehl Unix sed gemacht. Ich habe den Befehl zum Ersetzen und Anhängen in einer Datei ausprobiert. Aber die Schwierigkeit ist, ich muss eine Zwischendatei erstellen und dann mv verwenden, um sie in die Originaldatei umzubenennen.

Gibt es eine Möglichkeit, es in derselben Datei auf einmal zu machen?

%Vor%

Die Datei ist gelöscht!

%Vor%

Die Datei ist gelöscht!

    
kingsmasher1 31.07.2011, 12:05
quelle

3 Antworten

11

GNU sed kennt eine Option -i , die direkte Bearbeitung der angegebenen Dateien ausführt.

Beim Ausführen einer Operation file1 > file1 wird die Datei geöffnet und abgeschnitten durch die Shell vor dem Programm ( das bekommt seinen Namen als Argument) kommt um etwas davon zu lesen.

Aktualisieren :

sed's man-Seite sagt folgendes über die -i -Option aus (danke an Delan dafür):

%Vor%
    
Marcus Borkenhagen 31.07.2011, 12:07
quelle
11

Versuchen Sie es -

%Vor%

-i '' ist zum Bereitstellen einer Sicherungsdatei gedacht. Wenn Sie sicher sind, dass Ihre Ersetzung kein Problem verursacht, können Sie '' keine Sicherungsdatei übergeben ''

/ g wird global ersetzt. Wenn Sie mehr als einen Originaltext in einer Zeile haben, ersetzt die Option / g alles andere und ersetzt nur das erste.

    
dawnofthedead 27.09.2011 08:20
quelle
1

sed -i.baks / director / painter / 'file1

%Vor%     
rorycl 31.07.2011 12:09
quelle

Tags und Links