Pelajari Cara Menggunakan Pola Khusus Awk 'Mulai Dan Akhir' - Bagian 9
- 4854
- 789
- Simon Cormier
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
.
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:
- Mulai pola: berarti bahwa AWK akan menjalankan tindakan yang ditentukan dalam MULAI Sekali sebelum baris input apa pun dibaca.
- 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:
- Ketika
MULAI
pola digunakan dalam skrip, semua tindakan untuk MULAI dieksekusi sekali sebelum garis input apa pun dibaca. - Kemudian baris input dibaca dan diuraikan ke dalam bidang yang berbeda.
- 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.
- Berikutnya, tahap 2 dan 3 diulangi untuk semua baris input.
- 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.txtLihat 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 0Pola 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.txtSkrip 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.
- « Cara bekerja dengan grup paket DNF
- Cara menggunakan perintah 'temukan' untuk mencari beberapa nama file (ekstensi) di linux »