GNU/Linux >> Linux Esercitazione >  >> Linux

Salva le modifiche sul posto con awk

In GNU Awk 4.1.0 (rilasciato nel 2013) e versioni successive, ha l'opzione di modifica dei file "inplace":

[...] L'estensione "inplace", creata usando la nuova funzione, può essere usata per simulare il GNU "sed -i " funzione. [...]

Esempio di utilizzo:

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

Per conservare il backup:

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

A meno che tu non abbia GNU awk 4.1.0 o successivo...

Non avrai un'opzione come -i di sed opzione quindi invece fai:

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

Nota:il -i non è magico, crea anche un file temporaneo sed se ne occupa solo per te.

A partire da GNU awk 4.1.0...

GNU awk aggiunta questa funzionalità nella versione 4.1.0 (rilasciata il 10/05/2013) . Non è così semplice come dare solo il -i opzione come descritto nelle note rilasciate:

La nuova opzione -i (da xgawk) è usata per caricare i file della libreria awk. Ciò differisce da -f in quanto il primo argomento non opzione viene trattato come uno script.

Devi usare il pacchetto inplace.awk include file per richiamare correttamente l'estensione in questo modo:

$ cat file
123 abc
456 def
789 hij

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

$ cat file
123
456
789

La variabile INPLACE_SUFFIX può essere utilizzato per specificare l'estensione per un file di backup:

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

$ cat file
123
456
789

$ cat file.bak
123 abc
456 def
789 hij

Sono felice che questa funzionalità sia stata aggiunta, ma per me l'implementazione non è molto scomoda in quanto il potere deriva dalla concisione del linguaggio e da -i inplace è lungo 8 caratteri i.m.o .

Ecco un collegamento al manuale per la parola ufficiale.


solo un piccolo trucco che funziona

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

Linux
  1. Avviso con nftw

  2. Mantenimento delle autorizzazioni sui file con Git

  3. Come posso richiedere un file ma non salvarlo con Wget?

  4. Come salvare l'output di questo comando awk su file?

  5. Salva le modifiche in atto con NON GNU awk

Comando AWK in Linux con esempi

Comando Linux WC con esempi

Firme digitali con GnuPG

Comando AWK in Linux/Unix

AWK e nomi di file con spazio al suo interno.

Come modificare un file sul posto usando awk? (come con sed -i)