Kann sed seine Ausgabe in einer Datei speichern?

33

> kann es tun.

echo "text" > file

tee kann es tun.

echo "test" | tee file 

Kann man das sedmachen, ohne eine der oben genannten Methoden zu verwenden? Ist es möglich, die Ausgabe eines sedBefehls in einer Datei zu speichern, ohne entweder >oder zu verwenden tee?

Folatt
quelle
Bitte versuchen Sie, die Antwort selbst zu finden, bevor Sie hier Fragen stellen. Das erste, was wir von unseren Nutzern verlangen, ist die Suche und Recherche vor dem Posten. Alles, was Sie tun mussten, war, sed '' file > newfileund Sie hätten gesehen, dass >es in der Tat mit sedgenau wie mit jedem anderen Programm verwendet werden kann.
terdon
1
Der >Operator wird immer noch verwendet . Ich war interessiert, ob es einen sed-Befehl gibt, der stattdessen verwendet werden kann. Aber ich werde diese Frage löschen, wenn es so schlimm ist.
Folatt
Ah richtig. OK, das ist eine ganz andere Frage. Nachdem Sie die sed -iAntwort akzeptiert haben, bearbeite ich Ihre Frage und kläre, wonach Sie suchen.
terdon
Ich akzeptierte " sed ist nicht für die Datenumleitung gedacht, wie teeund >soll".
Folatt

Antworten:

49

tee und> können für die Datenumleitung verwendet werden, da diese für die Datenumleitung unter Linux verwendet werden sollen.

sed dagegen ist ein stream editor. sed ist nicht für die Datenumleitung gedacht, da tee und> so gedacht sein sollen. Sie können dazu jedoch die Konjunktion von Befehlen verwenden.

benutze tee oder> mit sed

sed 's/Hello/Hi/g' file-name | tee file

oder

sed 's/Hello/Hi/g' file-name > file

benutze sed mit der Option -i

sed -i 's/Hello/Hi/g' file-name

der letzte leitet nicht um, sondern nimmt Änderungen in der Datei selbst vor.

Ankidaemon
quelle
2
Vielen Dank. Du hast meine Frage verstanden. Die Antwort lautet also nein. Ich dachte, sedes könnte alleine funktionieren, da es auch in der Lage ist, Backup-Dateien mit dieser -i.bakOption zu erstellen .
Folatt
2
Richtig. Auch -i.bak ist keine feste Option, Sie können eine beliebige Erweiterung verwenden, die Ihre Sicherungsdatei haben soll. zum Beispiel. -i.log wird auch funktionieren. :)
Ankidaemon
Ich möchte nur hinzufügen, dass eigentlich gesucht wurde echo "test" | dd of=file status=none, die Ausgabe eines Echos zu unterdrücken, ohne die obskure Ausgabeumleitung zu verwenden 2> /dev/null, sondern nach den Einschränkungen von sed zu fragen. Ich war wirklich beeindruckt von den Fähigkeiten von sed, da es in der Lage ist, Zeilen in eine Datei einzufügen, was mir den Eindruck vermittelt, dass sed alles kann, was Tee kann und mehr.
Folatt
11

sedhat den wBefehl, der tun könnte, was Sie benötigen:

w Dateiname

Schreiben Sie den aktuellen Musterbereich in den Dateinamen.

sed 'w file'für sich allein hat die gleiche Wirkung wie tee file. Wenn es andere sed-Befehle gibt, geben Sie den wletzten ein:

sed 's/This/That/;w file'

Dies ist jedoch von der -n/--quiet/--silentOption nicht betroffen . Das unterdrückt nur den Inhalt, der sonst zur Standardausgabe gewechselt wäre.

JigglyNaga
quelle
0

Wie Ankidaemon richtig betonte, können wir sed-Ausgaben in einer Datei speichern. Ich möchte hinzufügen, dass, wenn wir einige Operationen an einer Datei durchführen, dh ersetzen und die Ausgabe in derselben Datei speichern möchten. Es gibt ein -iFlag, in seddem Inplace-Bearbeitungen möglich sind. Dadurch wird jedoch eine Sicherungsdatei erstellt. Wenn dies nicht benötigt wird, können Sie einfach einen leeren Dateinamen an -iflag übergeben.

Waqar Ahmed
quelle