GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Make `cut` Eine Datei an Ort und Stelle ändern?

Der man Seite macht mir nicht viel Hoffnung, aber ich hoffe, es handelt sich um ein undokumentiertes (und/oder GNU-spezifisches) Feature.

Akzeptierte Antwort:

Du kannst nicht. Verwenden Sie entweder ed oder GNU sed oder perl, oder tun Sie, was sie hinter den Kulissen tun, nämlich eine neue Datei für den Inhalt zu erstellen.

ed , tragbar:

ed foo <<EOF
1,$s/^([^,]*),([^,]*),([^,]*).*/1,3/
w
q
EOF

GNU sed :

sed -i -e 's/^([^,]*),([^,]*),([^,]*).*/1,3/' foo

Perl:

perl -i -l -F, -pae 'print @F[1,3]' foo

cut , Erstellen einer neuen Datei (empfohlen, denn wenn Ihr Skript unterbrochen wird, können Sie es einfach erneut ausführen):

cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo

cut , ersetzt die Datei an Ort und Stelle (behält den Besitz und die Berechtigungen von foo , braucht aber Schutz vor Unterbrechungen):

cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old

Ich empfehle die Verwendung eines der cut -basierte Methoden. Auf diese Weise sind Sie nicht auf ein nicht standardmäßiges Tool angewiesen, Sie können das beste Tool für den Job verwenden und das Verhalten bei Unterbrechungen steuern.


Linux
  1. Was zählt als Dateimodifikation oder -änderung?

  2. Wie verwende ich chmod, um die Dateiberechtigung zu ändern?

  3. chattr-Befehlsbeispiele zum Ändern von Dateiattributen (Dateien unveränderlich machen)

  4. Speichern Sie die Änderungen mit awk

  5. eine Logdatei erstellen

Chown-Befehl in Linux (Dateibesitz ändern)

Wie man eine Datei unter Linux ausführbar macht

Dateiinhalte ausgeben, während sie sich ändern?

So ändern Sie Dateiberechtigungen

Linux-make-Befehl mit Beispielen

Wie mache ich eine Datei NICHT änderbar?