Ketahui Cara Menggunakan Pembolehubah Awk, Ekspresi Numerik dan Pengendali Tugasan - Bahagian 8

Ketahui Cara Menggunakan Pembolehubah Awk, Ekspresi Numerik dan Pengendali Tugasan - Bahagian 8

Siri Perintah Awk semakin menarik Saya percaya, di tujuh bahagian sebelumnya, kami melalui beberapa asas Awk yang anda perlukan untuk menguasai untuk membolehkan anda melakukan beberapa teks asas atau penapisan rentetan di linux.

Bermula dengan bahagian ini, kita akan menyelam ke kawasan pendahuluan Awk Untuk mengendalikan operasi penapisan teks atau rentetan yang lebih kompleks. Oleh itu, kita akan menutup Awk Ciri -ciri seperti pembolehubah, ekspresi angka dan pengendali tugasan.

Belajar pembolehubah AWK, ekspresi angka dan pengendali tugasan

Konsep -konsep ini tidak berbeza secara komprehensif dari yang mungkin anda temui dalam banyak bahasa pengaturcaraan sebelum shell tersebut, C, python ditambah banyak lagi, jadi tidak perlu bimbang tentang topik ini, kita hanya merevisi idea -idea umum menggunakan Ciri -ciri yang disebutkan ini.

Ini mungkin akan menjadi salah satu yang paling mudah Awk bahagian perintah untuk difahami, jadi duduklah dan mari kita pergi.

1. Pembolehubah awk

Dalam mana -mana bahasa pengaturcaraan, pemboleh ubah adalah pemegang tempat yang menyimpan nilai, apabila anda membuat pemboleh ubah dalam fail program, kerana fail dilaksanakan, beberapa ruang dibuat dalam ingatan yang akan menyimpan nilai yang anda nyatakan untuk pembolehubah.

Anda boleh menentukan Awk Pembolehubah dengan cara yang sama anda menentukan pembolehubah shell seperti berikut:

variable_name = nilai 

Dalam sintaks di atas:

  1. variable_name: Adakah nama yang anda berikan kepada pemboleh ubah
  2. nilai: nilai yang disimpan dalam pemboleh ubah

Mari lihat beberapa contoh di bawah:

computer_name = "tecmint.com "port_no =" 22 "email =" [e -mel dilindungi] "server =" computer_name " 

Lihatlah contoh mudah di atas, dalam definisi pembolehubah pertama, nilai Tecmint.com diberikan kepada pemboleh ubah computer_name.

Tambahan pula, nilai 22 diberikan kepada pemboleh ubah port_no, Ia juga mungkin untuk memberikan nilai satu pemboleh ubah kepada pemboleh ubah lain seperti dalam contoh terakhir di mana kami memberikan nilai computer_name ke pelayan yang berubah -ubah.

Sekiranya anda boleh ingat, dari bahagian 2 siri AWK ini kami meliputi penyuntingan medan, kami bercakap tentang bagaimana AWK membahagikan garis input ke dalam medan dan menggunakan pengendali akses medan standard, $ untuk membaca bidang yang berbeza yang telah dihuraikan. Kita juga boleh menggunakan pembolehubah untuk menyimpan nilai medan seperti berikut.

first_name = $ 2 second_name = $ 3 

Dalam contoh di atas, nilai nama pertama ditetapkan ke medan kedua dan Nama kedua ditetapkan ke medan ketiga.

Sebagai ilustrasi, pertimbangkan fail yang dinamakan nama.txt yang mengandungi senarai pengguna aplikasi yang menunjukkan nama pertama dan terakhir mereka ditambah jantina. Menggunakan arahan CAT, kita dapat melihat kandungan fail seperti berikut:

$ nama kucing.txt 
Senaraikan kandungan fail menggunakan arahan kucing

Kemudian, kita juga boleh menggunakan pembolehubah nama pertama dan Nama kedua untuk menyimpan nama pertama dan kedua pengguna pertama dalam senarai seperti dengan menjalankan Awk Perintah di bawah:

$ awk '/aaron/first_name = $ 2; kedua_name = $ 3; cetak first_name, second_name;  'nama.txt 
Pemboleh ubah simpan menggunakan perintah awk

Marilah kita juga melihat kes lain, apabila anda mengeluarkan arahan uname -a Di terminal anda, ia mencetak semua maklumat sistem anda.

Medan kedua mengandungi anda Nama Host, oleh itu kita boleh menyimpan Nama Host dalam pemboleh ubah yang dipanggil Nama Host dan mencetaknya menggunakan Awk seperti berikut:

$ uname -a $ uname -a | awk 'hostName = $ 2; Cetak nama host;  ' 
Simpan output arahan ke pemboleh ubah menggunakan AWK

2. Ekspresi Numerik

Dalam Awk, Ekspresi angka dibina menggunakan pengendali angka berikut:

  1. * : Pengendali pendaraban
  2. + : Pengendali tambahan
  3. / : pengendali bahagian
  4. - : pengurangan pengendali
  5. % : pengendali modulus
  6. ^ : Pengendali eksponensi

Sintaks untuk ungkapan angka adalah:

operand1 operand1 operand2 

Dalam bentuk di atas, Operand1 dan Operand2 boleh menjadi nombor atau nama berubah, dan pengendali adalah mana -mana pengendali di atas.

Berikut adalah beberapa contoh untuk menunjukkan cara membina ungkapan angka:

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

Untuk memahami penggunaan ungkapan angka di Awk, Kami akan mempertimbangkan contoh berikut di bawah, dengan fail Domain.txt yang mengandungi semua domain yang dimiliki oleh Tecmint.

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 

Untuk melihat kandungan fail, gunakan arahan di bawah:

$ Domain CAT.txt 
Lihat kandungan fail

Sekiranya kita mahu mengira bilangan domain Tecmint.com Muncul dalam fail, kita boleh menulis skrip mudah untuk melakukannya seperti 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 = 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 
Skrip shell untuk mengira rentetan atau teks dalam fail

Setelah membuat skrip, simpan dan menjadikannya boleh dilaksanakan, ketika kami menjalankannya dengan fail, Domain.txt Sebagai input keluar, kami mendapat output berikut:

$ ./skrip.sh ~/domain.txt 
Skrip untuk mengira rentetan atau teks

Dari output skrip, terdapat 6 baris dalam fail Domain.txt yang mengandungi Tecmint.com, untuk mengesahkan bahawa anda boleh mengira mereka secara manual.

3. Pengendali tugasan

Yang terakhir Awk Ciri yang akan kami sampaikan adalah pengendali tugasan, terdapat beberapa pengendali tugasan di AWK dan ini termasuk yang berikut:

  1. *= : Pengendali tugasan pendaraban
  2. += : Pengendali tugasan tambahan
  3. /= : pengendali tugasan bahagian
  4. -= : pengendali tugasan pengurangan
  5. %= : pengendali tugasan modulus
  6. ^= : Pengendali tugasan eksponensi

Sintaks paling mudah operasi tugasan di Awk adalah seperti berikut:

$ variable_name = variable_name operator operand 

Contoh:

kaunter = 0 kaunter = kaunter+1 num = 20 num = num-1 

Anda boleh menggunakan pengendali tugasan di atas untuk memendekkan operasi tugasan di Awk, Pertimbangkan contoh sebelumnya, kita boleh melaksanakan tugasan dalam bentuk berikut:

variable_name operator = operand 
kaunter = 0 kaunter+= 1 num = 20 num- = 1 

Oleh itu, kita dapat mengubahnya Awk perintah dalam skrip shell yang kami tulis di atas menggunakan += Pengendali tugasan seperti 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 
Ubah skrip shell

Dalam segmen siri Awk ini, kami meliputi beberapa yang kuat Awk Ciri -ciri, ia.

Konsep -konsep ini tidak berbeza dengan bahasa pengaturcaraan lain tetapi mungkin terdapat beberapa perbezaan penting di bawah pengaturcaraan AWK.

Dalam Bahagian 9, kita akan melihat lebih banyak Awk Ciri -ciri yang merupakan corak khas: Mulakan dan Akhir. Sehingga itu, terus berhubung dengan Tecmint.