GNU/Linux >> Belajar Linux >  >> Linux

Simpan modifikasi di tempat dengan awk

Di GNU Awk 4.1.0 (dirilis 2013) dan yang lebih baru, ia memiliki opsi pengeditan file "inplace":

[...] Ekstensi "inplace", dibangun menggunakan fasilitas baru, dapat digunakan untuk mensimulasikan GNU "sed -i " fitur. [...]

Contoh penggunaan:

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

Untuk menyimpan cadangan:

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

Kecuali jika Anda memiliki GNU awk 4.1.0 atau lebih baru...

Anda tidak akan memiliki opsi seperti -i sed opsi jadi lakukan:

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

Catatan:-i bukan sihir, itu juga membuat file sementara sed hanya menanganinya untuk Anda.

Pada GNU awk 4.1.0...

GNU awk menambahkan fungsi ini di versi 4.1.0 (dirilis 10/05/2013) . Ini tidak semudah memberikan -i opsi seperti yang dijelaskan dalam catatan yang dirilis:

Opsi -i baru (dari xgawk) digunakan untuk memuat file perpustakaan awk. Ini berbeda dari -f karena argumen non-opsi pertama diperlakukan sebagai skrip.

Anda harus menggunakan inplace.awk yang dibundel sertakan file untuk menjalankan ekstensi dengan benar seperti:

$ cat file
123 abc
456 def
789 hij

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

$ cat file
123
456
789

Variabel INPLACE_SUFFIX dapat digunakan untuk menentukan ekstensi file cadangan:

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

$ cat file
123
456
789

$ cat file.bak
123 abc
456 def
789 hij

Saya senang fitur ini telah ditambahkan tetapi bagi saya, implementasinya tidak terlalu canggung karena kekuatannya berasal dari keringkasan bahasa dan -i inplace terlalu panjang 8 karakter i.m.o .

Berikut ini tautan ke manual untuk kata resmi.


hanya sedikit retasan yang berhasil

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

Linux
  1. Ganti Baris Baru Dengan Nul?

  2. Izin File di Linux dengan Contoh

  3. Peringatan dengan nftw

  1. Bagaimana cara menyimpan output dari perintah awk ini ke file?

  2. Simpan modifikasi di tempat dengan NON GNU awk

  3. Plot file .gnu dengan gnuplot

  1. Mempertahankan izin file dengan Git

  2. AWK dan nama file dengan spasi di dalamnya.

  3. Bagaimana cara mengubah file di tempat menggunakan awk? (seperti halnya sed -i)