Ketahui Cara Menggunakan Corak Khas Awk 'Begin and End' - Bahagian 9
- 933
- 78
- Daryl Wilderman
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
.
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:
- Corak mulakan: bermaksud bahawa awk akan melaksanakan tindakan yang dinyatakan dalam Mulakan sekali sebelum sebarang baris input dibaca.
- 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:
- Apabila
Mulakan
corak digunakan dalam skrip, semua tindakan untuk Mulakan dilaksanakan sekali sebelum sebarang garis input dibaca. - Kemudian garis input dibaca dan dihuraikan ke dalam bidang yang berbeza.
- 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.
- Seterusnya, Peringkat 2 dan 3 diulang untuk semua baris input.
- 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.txtLihat 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 0Corak 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.txtSkrip 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.
- « Cara Bekerja dengan Kumpulan Pakej DNF
- Cara Menggunakan Perintah 'Cari' untuk mencari pelbagai nama fail (sambungan) di Linux »