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, die ed 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.
Schreibe einen Kommentar