Wie ersetzt man die erste Zeile mit sed?

Wie ersetzt man die erste Zeile mit sed?

Hallo, ich versuche, die Kopfzeile meiner Datei mit dem unten beschriebenen sed-Befehl zu ersetzen.

sed "1s/.*/$new_header/" Test_file.csv 

Die obige Zeile ersetzt den Header und druckt in stdout. Aber wie kann ich die Ausgabe in eine neue Datei umleiten oder direkt in den Dateien ersetzen?

sed "1s/.*/$new_header/" Test_file.csv > new_file.csv 

Der obige Befehl funktioniert einwandfrei, aber ich möchte zur gleichen Datei umleiten.

Antwort1

-iSie können ein Flag verwenden sed, um direkt Änderungen vorzunehmen und außerdem eine Sicherungskopie zu erstellen:

sed -i.bak "1 s/.*/$new_header/" inputfile

Beachten Sie, dass die -iOption nicht standardmäßig ist und in verschiedenen Implementierungen von unterschiedlich funktionieren kann sed. SieheWie kann ich mit sed -i (In-Place-Bearbeitung) Portabilität erreichen?

verwandte Informationen