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

Speichern Sie die Änderungen mit awk

In GNU Awk 4.1.0 (veröffentlicht 2013) und höher hat es die Option der "Inplace"-Dateibearbeitung:

[...] Die Erweiterung "inplace", die unter Verwendung der neuen Einrichtung erstellt wurde, kann verwendet werden, um GNU "sed -i zu simulieren "-Funktion. [...]

Beispielverwendung:

$ gawk -i inplace '{ gsub(/foo/, "bar") }; { print }' file1 file2 file3

Um die Sicherung aufzubewahren:

$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{ gsub(/foo/, "bar") }
> { print }' file1 file2 file3

Es sei denn, Sie haben GNU awk 4.1.0 oder höher...

Sie haben keine solche Option wie -i von sed Option so stattdessen tun:

$ awk '{print $0}' file > tmp && mv tmp file

Hinweis:die -i ist keine Zauberei, es erstellt auch eine temporäre Datei sed erledigt das einfach für Sie.

Ab GNU awk 4.1.0...

GNU awk Diese Funktion wurde in Version 4.1.0 (veröffentlicht am 05.10.2013) hinzugefügt . Es ist nicht so einfach, einfach den -i anzugeben Option wie in den veröffentlichten Notizen beschrieben:

Die neue Option -i (von xgawk) wird zum Laden von awk-Bibliotheksdateien verwendet. Dies unterscheidet sich von -f darin, dass das erste Argument, das keine Option ist, als Skript behandelt wird.

Sie müssen den gebündelten inplace.awk verwenden include-Datei, um die Erweiterung wie folgt korrekt aufzurufen:

$ cat file
123 abc
456 def
789 hij

$ gawk -i inplace '{print $1}' file

$ cat file
123
456
789

Die Variable INPLACE_SUFFIX kann verwendet werden, um die Erweiterung für eine Sicherungsdatei anzugeben:

$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{print $1}' file

$ cat file
123
456
789

$ cat file.bak
123 abc
456 def
789 hij

Ich bin froh, dass diese Funktion hinzugefügt wurde, aber für mich ist die Implementierung nicht sehr umständlich, da die Kraft von der Prägnanz der Sprache und -i inplace kommt ist 8 Zeichen zu lang i.m.o .

Hier ist ein Link zum Handbuch für das offizielle Wort.


nur ein kleiner Hack, der funktioniert

echo "$(awk '{awk code}' file)" > file

Linux
  1. Dateiberechtigungen unter Linux mit Beispiel

  2. Dateiberechtigungen mit Git beibehalten

  3. Wie fordere ich eine Datei an, speichere sie aber nicht mit Wget?

  4. tar -C mit einem Wildcard-Dateimuster

  5. Wie fülle ich eine Datei mit FF mit dd auf?

AWK-Befehl in Linux mit Beispielen

Linux-WC-Befehl mit Beispielen

Erste Schritte mit ls

Digitale Signaturen mit GnuPG

AWK-Befehl unter Linux/Unix

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)