Ketahui Cara Menggunakan Corak Khas Awk 'Begin and End' - Bahagian 9

Ketahui Cara Menggunakan Corak Khas Awk 'Begin and End' - Bahagian 9

Dalam Bahagian 8 Dari siri AWK ini, kami memperkenalkan beberapa ciri arahan AWK yang kuat, iaitu pembolehubah, ungkapan angka dan pengendali tugasan.

Seperti yang kita maju, dalam segmen ini, kita akan meliputi lebih banyak Awk Ciri -ciri, dan itu adalah corak khas: Mulakan dan Akhir.

Belajar corak awk bermula dan berakhir

Ciri -ciri khas ini akan membuktikan apabila kami cuba mengembangkan dan meneroka lebih banyak kaedah kompleks bangunan Awk Operasi.

Untuk memulakan, marilah kita memacu pemikiran kita kembali ke pengenalan Awk siri, ingat ketika kami memulakan siri ini, saya menegaskan bahawa sintaks umum yang sedang berjalan Awk Perintah adalah:

nama fail # awk 'skrip' 

Dan dalam sintaks di atas, Awk Skrip mempunyai bentuk:

/ corak/ tindakan 

Apabila anda mempertimbangkan corak dalam skrip, ia biasanya merupakan ungkapan biasa, tambahan pula, anda juga boleh memikirkan corak sebagai corak khas Mulakan dan Akhir. Oleh itu, kita juga boleh menulis Awk Perintah dalam borang di bawah:

awk 'bermula actions / corak / actions / corak / actions .. . End actions 'nama fail 

Sekiranya anda menggunakan corak khas: Mulakan dan Akhir dalam Awk Skrip, inilah maksudnya:

  1. Corak mulakan: bermaksud bahawa awk akan melaksanakan tindakan yang dinyatakan dalam Mulakan sekali sebelum sebarang baris input dibaca.
  2. Corak akhir: bermaksud bahawa awk akan melaksanakan tindakan yang dinyatakan dalam Akhir sebelum ia benar -benar keluar.

Dan aliran pelaksanaan an Awk Skrip Perintah yang mengandungi corak khas ini adalah seperti berikut:

  1. Apabila Mulakan corak digunakan dalam skrip, semua tindakan untuk Mulakan dilaksanakan sekali sebelum sebarang garis input dibaca.
  2. Kemudian garis input dibaca dan dihuraikan ke dalam bidang yang berbeza.
  3. Seterusnya, setiap corak bukan khusus yang ditentukan dibandingkan dengan garis input untuk perlawanan, apabila perlawanan dijumpai, tindakan (s) untuk corak itu kemudian dilaksanakan. Tahap ini akan diulang untuk semua corak yang telah anda tentukan.
  4. Seterusnya, Peringkat 2 dan 3 diulang untuk semua baris input.
  5. Apabila semua baris input telah dibaca dan ditangani, sekiranya anda menentukan Akhir corak, tindakan akan dilaksanakan.

Anda harus selalu ingat urutan pelaksanaan ini ketika bekerja dengan corak khas untuk mencapai hasil terbaik dalam Awk operasi.

Untuk memahami semuanya, marilah kita menggambarkan menggunakan contoh dari Bahagian 8, mengenai senarai domain yang dimiliki oleh Tecmint, Seperti yang disimpan dalam fail yang dinamakan Domain.txt.

berita.Tecmint.com tecmint.com linuxsay.com windows.Tecmint.com tecmint.berita com.Tecmint.com tecmint.com linuxsay.com tecmint.berita com.Tecmint.com tecmint.com linuxsay.com windows.Tecmint.com tecmint.com 
$ kucing ~/domain.txt 
Lihat kandungan fail

Dalam contoh ini, kami ingin mengira bilangan kali domain Tecmint.com disenaraikan dalam fail Domain.txt. Oleh itu, kami menulis skrip shell kecil untuk membantu kami melakukannya dengan menggunakan idea pembolehubah, ekspresi angka dan pengendali tugasan yang mempunyai kandungan berikut:

#!/bin/bash untuk fail dalam [dilindungi e -mel]; lakukan jika [-f $ file]; kemudian #print keluar nama fail echo "Fail: $ file" #print nombor secara bertahap untuk setiap baris yang mengandungi tecmint.com awk '/^tecmint.com/ counter+= 1; printf "%s \ n", kaunter;  '$ file else #print ralat info input input bukan fail echo "$ file bukan fail, sila nyatakan fail."> & 2 && Keluar 1 fi selesai #Tminate skrip dengan kod keluar 0 dalam hal pelaksanaan yang berjaya keluar 0 

Marilah kita menggunakan dua corak khas: Mulakan dan Akhir di dalam Awk Perintah dalam skrip di atas seperti berikut:

Kami akan mengubah skrip:

awk '/^tecmint.com/ counter+= 1; printf "%s \ n", kaunter;  '$ fail 

Ke:

awk ' Mulakan cetak "Bilangan kali tecmint.com muncul dalam fail adalah: "; /^tecmint.com/ counter+= 1;  Akhir printf "%s \ n", kaunter;  '$ fail 

Setelah membuat perubahan pada Awk Perintah, skrip shell lengkap sekarang kelihatan seperti ini:

#!/bin/bash untuk fail dalam [dilindungi e -mel]; lakukan jika [-f $ file]; kemudian #print keluar nama fail echo "Fail: $ file" #print jumlah bilangan kali tecmint.com muncul dalam fail Awk ' Mulakan cetak "Bilangan kali tecmint.com muncul dalam fail adalah: "; /^tecmint.com/ counter+= 1;  Akhir printf "%s \ n", kaunter;  '$ file else #print ralat info input input bukan fail echo "$ file bukan fail, sila nyatakan fail."> & 2 && Keluar 1 fi selesai #Tminate skrip dengan kod keluar 0 dalam hal pelaksanaan yang berjaya keluar 0 
Corak permulaan dan akhir

Apabila kita menjalankan skrip di atas, ia akan terlebih dahulu mencetak lokasi fail Domain.txt, Kemudian Awk skrip perintah dilaksanakan, di mana Mulakan Corak Khas Membantu Kami Mencetak Mesej "Bilangan kali tecmint.com muncul dalam fail ialah:"Sebelum sebarang baris input dibaca dari fail.

Kemudian corak kami, /^Tecmint.com/ dibandingkan dengan setiap baris input dan tindakan, counter+= 1; dilaksanakan untuk setiap baris input, yang mengira bilangan kali Tecmint.com muncul dalam fail.

Akhirnya, Akhir corak akan mencetak jumlah bilangan kali domain Tecmint.com muncul dalam fail.

$ ./skrip.sh ~/domain.txt 
Skrip untuk mengira bilangan kali rentetan muncul

Untuk membuat kesimpulan, kami berjalan lebih banyak Awk Ciri -ciri meneroka konsep corak khas: Mulakan dan Akhir.

Seperti yang saya katakan sebelum ini, ciri -ciri AWK ini akan membantu kami membina operasi penapisan teks yang lebih kompleks, terdapat lebih banyak lagi yang perlu diliputi di bawah Awk ciri dan dalam Bahagian 10, Kami akan mendekati idea pembolehubah terbina dalam Awk, jadi terus berhubung.