Ketahui cara menggunakan pembolehubah terbina dalam AWK - Bahagian 10

Ketahui cara menggunakan pembolehubah terbina dalam AWK - Bahagian 10

Seperti yang kita dapati bahagian Awk Ciri-ciri, dalam bahagian siri ini, kita akan melalui konsep pembolehubah terbina dalam AWK. Terdapat dua jenis pembolehubah yang boleh anda gunakan dalam AWK, ini; Ditetapkan pengguna pembolehubah, yang kami tutupi dalam bahagian 8 dan terbina dalam pembolehubah.

Awk dibina dalam contoh pembolehubah

Terbina dalam Pembolehubah mempunyai nilai yang telah ditakrifkan dalam Awk, Tetapi kita juga boleh mengubah nilai-nilai tersebut dengan teliti, pembolehubah terbina dalam termasuk:

  1. NAMA FAIL : Nama fail input semasa (jangan ubah nama berubah)
  2. Fr : bilangan baris input semasa (iaitu garis input 1, 2, 3 ... SO, jangan ubah nama pembolehubah)
  3. Nf : bilangan medan dalam baris input semasa (jangan ubah nama berubah)
  4. OFS : pemisah medan output
  5. Fs : pemisah medan input
  6. ORS : pemisah rekod output
  7. Rs : pemisah rekod input

Marilah kita teruskan untuk menggambarkan penggunaan beberapa pembolehubah terbina dalam AWK di atas:

Untuk membaca nama fail fail input semasa, anda boleh menggunakan NAMA FAIL Pembolehubah terbina dalam seperti berikut:

$ awk 'cetak nama fail' ~/domain.txt 
Pembolehubah nama fail AWK

Anda akan menyedari bahawa, nama fail dicetak untuk setiap baris input, iaitu tingkah laku lalai Awk semasa anda menggunakan NAMA FAIL pemboleh ubah terbina dalam.

Menggunakan Nr Untuk mengira bilangan baris (rekod) dalam fail input, ingatlah bahawa, ia juga mengira garis kosong, seperti yang akan kita lihat dalam contoh di bawah.

Apabila kita melihat fail tersebut Domain.txt Menggunakan perintah kucing, ia mengandungi 14 garis dengan teks dan kosong 2 garis:

$ kucing ~/domain.txt 
Cetak kandungan fail
$ AWK 'end print "Bilangan rekod dalam fail adalah:", nr' ~/domain.txt 
Awk bilangan baris

Untuk mengira bilangan medan dalam rekod atau baris, kami menggunakan pembolehubah terbina dalam NR seperti berikut:

$ kucing ~/nama.txt 
Senaraikan kandungan fail
$ awk 'print "rekod:", nr, "mempunyai", nf, "fields";  '~/nama.txt 
Awk bilangan medan dalam fail

Seterusnya, anda juga boleh menentukan pemisah medan input menggunakan Fs pemboleh ubah terbina dalam, ia mentakrifkan bagaimana Awk membahagikan garis input ke dalam medan.

Nilai lalai untuk Fs adalah ruang dan tab, Tetapi kita boleh mengubah nilai Fs kepada mana -mana watak yang akan mengarahkan AWK untuk membahagikan baris input dengan sewajarnya.

Terdapat dua kaedah untuk melakukan ini:

  1. Satu kaedah ialah menggunakan Fs pemboleh ubah terbina dalam
  2. dan yang kedua adalah untuk memohon -F Pilihan AWK

Pertimbangkan fail /etc/passwd Pada sistem Linux, medan dalam fail ini dibahagikan dengan menggunakan : watak, jadi kita boleh menentukannya sebagai pemisah medan input baru apabila kita ingin menyaring medan tertentu seperti dalam contoh berikut:

Kita boleh menggunakan -F pilihan seperti berikut:

$ awk -f ': "Print $ 1, $ 4;' /etc /Passwd 
Medan penapis awk dalam fail kata laluan

Secara pilihan, kita juga boleh memanfaatkan Fs Pembolehubah terbina dalam seperti di bawah:

$ awk 'bermula fs = ":";  cetak $ 1, $ 4;  ' /etc /passwd 
Medan penapis dalam fail menggunakan AWK

Untuk menentukan pemisah medan output, gunakan OFS Pembolehubah terbina dalam, ia mentakrifkan bagaimana medan output akan dipisahkan menggunakan watak yang kami gunakan seperti dalam contoh di bawah:

$ awk -f ': "Begin ofs =" ==> "; Print $ 1, $ 4;' /etc /Passwd 
Tambahkan pemisah ke medan dalam fail

Di dalam ini Bahagian 10, Kami telah meneroka idea menggunakan pembolehubah terbina dalam AWK yang dilengkapi dengan nilai yang telah ditetapkan. Tetapi kita juga boleh mengubah nilai -nilai ini, bagaimanapun, tidak disyorkan untuk melakukannya melainkan jika anda tahu apa yang anda lakukan, dengan pemahaman yang mencukupi.

Selepas ini, kita akan maju untuk menampung bagaimana kita boleh menggunakan pembolehubah shell dalam operasi perintah awk, oleh itu, terus berhubung dengan Tecmint.