sed nicht zu ersetzen, Linien
Ich habe eine Datei mit 1 Zeile text genannt output
. Ich habe Schreibzugriff auf die Datei. Ändern kann ich es von einem editor ohne Probleme.
$ cat output
1
$ ls -l o*
-rw-rw-r-- 1 jbk jbk 2 Jan 27 18:44 output
Was ich will zu tun ist, ersetzen Sie die erste (und einzige) Zeile in diese Datei mit einem neuen Wert entweder eine 1 oder eine 0. Es scheint mir, dass die sed sollte perfekt sein für diesen:
$ sed '1 c\ 0' output
0
$ cat output
1
Aber es ändert sich nie die Datei. Ich habe versucht, es erstreckt sich über 2 Linien auf dem umgekehrten Schrägstrich und Anführungszeichen eingeschlossen werden, aber ich kann es nicht um eine 0 (oder irgendetwas anderes) in der ersten Zeile.
- Sie müssen
in-place
Bearbeiten. Siehe die man-Seite für die-i
Flagge. - ...Oder Sie können
ed
, die ich werde immer zu erwähnen, weil ich bin hartnäckig und das ist eigentlich die Art von Sache, dieed
ist für. (Im Gegensatz zum hinzufügen einer benutzerdefinierten Erweiterung um ein stream-editor, so kann er zurück schreiben auf Dateien.) - sed arbeitet auf einem Datenstrom und druckt dessen Ausgabe auf standard out. Wenn Sie möchten, ändern Sie Ihre Eingabe-Datei, nehmen Sie einen Blick auf meine Antwort unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sed arbeitet auf streams und druckt dessen Ausgabe auf standard out.
Ist es nicht ändern Sie die input-Datei.
Es ist in der Regel verwendet, wie diese, wenn Sie aufnehmen möchten, seine Ausgabe in eine Datei:
Der obige Befehl ruft
sed
aufinput-file
und leitet die Ausgabe in eine neue Datei mit dem Namenoutput-file
.Abhängig von Ihrer Plattform, die Sie vielleicht in der Lage sein zu verwenden, sed -
-i
option zum ändern der Dateien:HINWEIS:
Nicht alle Versionen von sed-support
-i
.Auch, verschiedene Versionen von sed umzusetzen
-i
anders.Auf einigen Plattformen Sie MUSS geben Sie eine backup-Erweiterung (auf andere, die Sie nicht haben).
ed
und dem nicht-standard, aber allzu Häufig-i
Flagge.sed
unterstützt die-i
option; die meisten anderen Versionen vonsed
nicht.ed
für diese, aber konnte keine Beispiele wie man eine bedingungslose Ersatz. In der Erwägung, dasssed
ist ganz über dem Platz.Da dies ist eine unglaublich einfache Datei sed kann tatsächlich zu viel des guten. Es klingt wie Sie möchten, dass die Datei genau ein Zeichen: '0' oder '1'.
Kann es besser machen Sinn, in diesem Fall das die Datei einfach überschrieben anstatt Sie zu Bearbeiten, z.B.:
oder