Pelajari cara menggunakan variabel awk, ekspresi numerik dan operator penugasan - Bagian 8

Pelajari cara menggunakan variabel awk, ekspresi numerik dan operator penugasan - Bagian 8

Seri perintah awk semakin menarik, saya percaya, di tujuh bagian sebelumnya, kami berjalan melalui beberapa dasar AWK yang perlu Anda kuasai untuk memungkinkan Anda melakukan beberapa teks dasar atau penyaringan string di Linux.

Dimulai dengan bagian ini, kami akan menyelami area di muka AWK untuk menangani operasi pemfilteran teks atau string yang lebih kompleks. Oleh karena itu, kami akan membahas AWK Fitur seperti variabel, ekspresi numerik dan operator penugasan.

Pelajari variabel awk, ekspresi numerik dan operator penugasan

Konsep -konsep ini tidak secara komprehensif berbeda dari yang mungkin Anda temui dalam banyak bahasa pemrograman sebelum cangkang seperti itu, C, Python plus banyak lainnya, jadi tidak perlu banyak khawatir tentang topik ini, kami hanya merevisi ide -ide umum penggunaan umum Fitur -fitur yang disebutkan ini.

Ini mungkin akan menjadi salah satu yang termudah AWK bagian perintah untuk dipahami, jadi duduklah dan mari kita pergi.

1. Variabel awk

Dalam bahasa pemrograman apa pun, variabel adalah pemegang tempat yang menyimpan nilai, saat Anda membuat variabel dalam file program, saat file dieksekusi, beberapa ruang dibuat dalam memori yang akan menyimpan nilai yang Anda tentukan untuk variabel tersebut.

Anda bisa mendefinisikan AWK Variabel dengan cara yang sama Anda mendefinisikan variabel shell sebagai berikut:

variable_name = nilai 

Di sintaks di atas:

  1. variable_name: adalah nama yang Anda berikan variabel
  2. nilai: Nilai yang disimpan dalam variabel

Mari kita lihat beberapa contoh di bawah ini:

computer_name = ”tecmint.com "port_no =" 22 "email =" [email dilindungi] "server =" computer_name " 

Lihatlah contoh sederhana di atas, dalam definisi variabel pertama, nilainya tecmint.com ditugaskan ke variabel nama komputer.

Selanjutnya, nilainya 22 ditugaskan ke variabel port_no, Dimungkinkan juga untuk menetapkan nilai satu variabel ke variabel lain seperti pada contoh terakhir di mana kami menetapkan nilai dari nama komputer ke server variabel.

Jika Anda dapat mengingat, langsung dari bagian 2 dari seri AWK ini jika kami meliput pengeditan lapangan, kami berbicara tentang bagaimana AWK membagi garis input menjadi bidang dan menggunakan operator akses lapangan standar, $ untuk membaca berbagai bidang yang telah diuraikan. Kami juga dapat menggunakan variabel untuk menyimpan nilai -nilai bidang sebagai berikut.

first_name = $ 2 detik_name = $ 3 

Dalam contoh di atas, nilai nama depan diatur ke bidang kedua dan Nama kedua diatur ke bidang ketiga.

Sebagai ilustrasi, pertimbangkan file bernama nama.txt yang berisi daftar pengguna aplikasi yang menunjukkan nama depan dan belakang mereka ditambah jenis kelamin. Menggunakan perintah CAT, kita dapat melihat konten file sebagai berikut:

$ nama kucing.txt 
Daftar konten file menggunakan perintah kucing

Kemudian, kita juga dapat menggunakan variabel nama depan Dan Nama kedua Untuk menyimpan nama pertama dan kedua dari pengguna pertama dalam daftar sebagai dengan menjalankan AWK Perintah di bawah ini:

$ awk '/aaron/first_name = $ 2; Second_name = $ 3; cetak first_name, detik_name;  nama.txt 
Simpan variabel menggunakan perintah awk

Biarkan kami juga melihat kasus lain, saat Anda mengeluarkan perintah Uname -A Di terminal Anda, itu mencetak semua informasi sistem Anda.

Bidang kedua berisi nama host, Oleh karena itu kita bisa menyimpan nama host dalam variabel yang disebut nama host dan mencetaknya menggunakan AWK sebagai berikut:

$ uname -a $ uname -a | awk 'hostname = $ 2; cetak nama host;  ' 
Simpan output perintah ke variabel menggunakan awk

2. Ekspresi Numerik

Di dalam AWK, Ekspresi numerik dibangun menggunakan operator numerik berikut:

  1. * : Operator multiplikasi
  2. + : Operator tambahan
  3. / : Operator Divisi
  4. - : Operator Pengurangan
  5. % : Operator Modulus
  6. ^ : operator eksponensial

Sintaks untuk ekspresi numerik adalah:

$ operator operator operator2 

Dalam bentuk di atas, operand1 Dan operand2 dapat berupa angka atau nama variabel, dan operator adalah salah satu operator di atas.

Di bawah ini adalah beberapa contoh untuk menunjukkan cara membangun ekspresi numerik:

penghitung = 0 num1 = 5 num2 = 10 num3 = num2-num1 counter = counter+1 

Untuk memahami penggunaan ekspresi numerik AWK, Kami akan mempertimbangkan contoh berikut di bawah ini, dengan file Domain.txt yang berisi semua domain yang dimiliki oleh Tecmint.

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 

Untuk melihat isi file, gunakan perintah di bawah ini:

$ domain kucing.txt 
Lihat Isi File

Jika kita ingin menghitung berapa kali domain tecmint.com Muncul dalam file, kita dapat menulis skrip sederhana untuk melakukan itu sebagai 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 = 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 
Skrip shell untuk menghitung string atau teks dalam file

Setelah membuat skrip, simpan dan membuatnya dapat dieksekusi, saat kita menjalankannya dengan file, Domain.txt Sebagai input, kami mendapatkan output berikut:

$ ./naskah.sh ~/domain.txt 
Skrip untuk menghitung string atau teks

Dari output skrip, ada 6 baris dalam file Domain.txt yang berisi tecmint.com, untuk mengonfirmasi bahwa Anda dapat menghitungnya secara manual.

3. Operator penugasan

Yang terakhir AWK Fitur yang akan kami bahas adalah operator penugasan, ada beberapa operator penugasan di AWK dan ini termasuk yang berikut:

  1. *= : operator penugasan perkalian
  2. += : operator penugasan tambahan
  3. /= : operator penugasan divisi
  4. -= : operator penugasan pengurangan
  5. %= : Operator penugasan modulus
  6. ^= : operator penugasan eksponensial

Sintaks paling sederhana dari operasi penugasan di AWK adalah sebagai berikut:

$ variable_name = operan operator variabel_name 

Contoh:

penghitung = 0 penghitung = penghitung+1 num = 20 num = num-1 

Anda dapat menggunakan operator penugasan di atas untuk mempersingkat operasi penugasan di AWK, Pertimbangkan contoh sebelumnya, kami dapat melakukan tugas dalam bentuk berikut:

variable_name operator = operan 
penghitung = 0 penghitung+= 1 num = 20 num- = 1 

Karena itu, kita dapat mengubah AWK Perintah dalam skrip shell yang baru saja kami tulis di atas += Operator penugasan sebagai 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 
Ubah skrip shell

Di segmen seri AWK ini, kami membahas beberapa yang kuat AWK fitur, yaitu variabel, membangun ekspresi numerik dan menggunakan operator penugasan, ditambah beberapa ilustrasi tentang bagaimana kita benar -benar dapat menggunakannya.

Konsep -konsep ini tidak berbeda dari yang ada dalam bahasa pemrograman lain tetapi mungkin ada beberapa perbedaan yang signifikan di bawah pemrograman AWK.

Di dalam Bagian 9, Kami akan melihat lebih banyak AWK fitur yang merupakan pola khusus: MULAI Dan AKHIR. Sampai saat itu, tetap terhubung ke Tecmint.