Pelajari Cara Menggunakan Pola Khusus Awk 'Mulai Dan Akhir' - Bagian 9

Pelajari Cara Menggunakan Pola Khusus Awk 'Mulai Dan Akhir' - Bagian 9

Di dalam Bagian 8 Dari seri AWK ini, kami memperkenalkan beberapa fitur perintah AWK yang kuat, yaitu variabel, ekspresi numerik dan operator penugasan.

Saat kami maju, di segmen ini, kami akan mencakup lebih banyak AWK fitur, dan itu adalah pola khusus: MULAI Dan AKHIR.

Pelajari Pola AWK Mulai Dan Akhir

Fitur -fitur khusus ini akan terbukti bermanfaat saat kami mencoba memperluas dan mengeksplorasi lebih banyak metode pembangunan kompleks AWK operasi.

Untuk memulai, mari kita mengarahkan pikiran kita kembali ke pengenalan AWK seri, ingat ketika kami memulai seri ini, saya menunjukkan bahwa sintaks umum dari menjalankan AWK Perintah adalah:

JAM AWK 'SCRIPT' SCRIPT ' 

Dan di sintaks di atas, AWK Script memiliki formulir:

/ pola/ action 

Ketika Anda mempertimbangkan pola dalam skrip, itu biasanya merupakan ekspresi reguler, selain itu, Anda juga dapat menganggap pola sebagai pola khusus MULAI Dan AKHIR. Oleh karena itu, kami juga dapat menulis AWK Perintah dalam bentuk di bawah ini:

awk 'begin action / pola / action / pola / action… . End action 'nama file 

Jika Anda menggunakan pola khusus: MULAI Dan AKHIR dalam an AWK skrip, inilah arti masing -masing dari mereka:

  1. Mulai pola: berarti bahwa AWK akan menjalankan tindakan yang ditentukan dalam MULAI Sekali sebelum baris input apa pun dibaca.
  2. Pola akhir: berarti bahwa AWK akan menjalankan tindakan yang ditentukan dalam AKHIR Sebelum benar -benar keluar.

Dan aliran eksekusi an AWK Skrip perintah yang berisi pola -pola khusus ini adalah sebagai berikut:

  1. Ketika MULAI pola digunakan dalam skrip, semua tindakan untuk MULAI dieksekusi sekali sebelum garis input apa pun dibaca.
  2. Kemudian baris input dibaca dan diuraikan ke dalam bidang yang berbeda.
  3. Selanjutnya, masing-masing pola non-khusus yang ditentukan dibandingkan dengan garis input untuk kecocokan, ketika kecocokan ditemukan, aksi untuk pola itu kemudian dieksekusi. Tahap ini akan diulangi untuk semua pola yang telah Anda tentukan.
  4. Berikutnya, tahap 2 dan 3 diulangi untuk semua baris input.
  5. Ketika semua baris input telah dibaca dan ditangani, jika Anda menentukan AKHIR pola, tindakan akan dieksekusi.

Anda harus selalu mengingat urutan eksekusi ini saat bekerja dengan pola khusus untuk mencapai hasil terbaik dalam AWK operasi.

Untuk memahami semuanya, mari kita ilustrasikan menggunakan contoh dari Bagian 8, tentang daftar domain yang dimiliki oleh Tecmint, seperti yang disimpan dalam file bernama Domain.txt.

berita.tecmint.com tecmint.Com Linuxsay.com windows.tecmint.com tecmint.Com News.tecmint.com tecmint.Com Linuxsay.com tecmint.Com News.tecmint.com tecmint.Com Linuxsay.com windows.tecmint.com tecmint.com 
$ kucing ~/domain.txt 
Lihat Isi File

Dalam contoh ini, kami ingin menghitung berapa kali domain tecmint.com tercantum dalam file Domain.txt. Jadi kami menulis skrip shell kecil untuk membantu kami melakukan itu menggunakan ide variabel, ekspresi numerik dan operator penugasan yang memiliki konten berikut:

#!/bin/bash untuk file di [email dilindungi]; lakukan jika [-f $ file]; lalu #print out fileName echo "File adalah: $ file" #print nomor secara bertahap untuk setiap baris yang berisi tecmint.com awk '/^tecmint.com/ counter+= 1; printf "%s \ n", counter;  '$ file else #print kesalahan info input bukan file echo "$ file bukan file, harap tentukan file."> & 2 && keluar 1 fi selesai #mester skrip dengan kode keluar 0 dalam kasus eksekusi yang berhasil keluar 0 

Mari kita sekarang menggunakan dua pola khusus: MULAI Dan AKHIR dalam AWK Perintah dalam skrip di atas sebagai berikut:

Kami akan mengubah skrip:

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

Ke:

Awk ' MULAI cetak "berapa kali tecmint.com muncul di file adalah: "; /^tecmint.com/ counter+= 1;  AKHIR printf "%s \ n", counter;  '$ file 

Setelah membuat perubahan pada AWK Perintah, skrip shell lengkap sekarang terlihat seperti ini:

#!/bin/bash untuk file di [email dilindungi]; lakukan jika [-f $ file]; lalu #print out file echo "file adalah: $ file" #print Total jumlah tecmint.com muncul di file awk ' MULAI cetak "berapa kali tecmint.com muncul di file adalah: "; /^tecmint.com/ counter+= 1;  AKHIR printf "%s \ n", counter;  '$ file else #print kesalahan info input bukan file echo "$ file bukan file, harap tentukan file."> & 2 && keluar 1 fi selesai #mester skrip dengan kode keluar 0 dalam kasus eksekusi yang berhasil keluar 0 
Pola AWK Mulai dan Akhir

Saat kami menjalankan skrip di atas, pertama -tama akan mencetak lokasi file Domain.txt, lalu AWK skrip perintah dijalankan, di mana MULAI Pola Khusus Membantu Kami Mencetak Pesan "Berapa kali tecmint.com muncul di file adalah:”Sebelum garis input apa pun dibaca dari file.

Lalu pola kita, /^tecmint.com/ dibandingkan dengan setiap baris input dan aksinya, counter+= 1; dieksekusi untuk setiap baris input, yang menghitung berapa kali tecmint.com muncul di file.

Akhirnya, AKHIR pola akan mencetak total berapa kali domain tecmint.com muncul di file.

$ ./naskah.sh ~/domain.txt 
Skrip untuk menghitung jumlah kali string muncul

Untuk menyimpulkan, kami berjalan lebih banyak AWK Fitur Menjelajahi Konsep Pola Khusus: MULAI Dan AKHIR.

Seperti yang saya tunjukkan sebelumnya, fitur -fitur AWK ini akan membantu kami membangun operasi penyaringan teks yang lebih kompleks, ada lebih banyak yang harus ditutup di bawah AWK fitur dan dalam Bagian 10, Kami akan mendekati gagasan variabel bawaan yang canggung, jadi tetap terhubung.