Ketahui Cara Menggunakan Pembolehubah Awk, Ekspresi Numerik dan Pengendali Tugasan - Bahagian 8
- 4459
- 291
- Noah Torp
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 tugasanKonsep -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:
variable_name
: Adakah nama yang anda berikan kepada pemboleh ubahnilai
: 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.txtSenaraikan 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.txtPemboleh 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:
*
: Pengendali pendaraban+
: Pengendali tambahan/
: pengendali bahagian-
: pengurangan pengendali%
: pengendali modulus^
: 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.txtLihat 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 0Skrip 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.txtSkrip 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:
*=
: Pengendali tugasan pendaraban+=
: Pengendali tugasan tambahan/=
: pengendali tugasan bahagian-=
: pengendali tugasan pengurangan%=
: pengendali tugasan modulus^=
: 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 0Ubah 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.
- « 8 Perekam Skrin Terbaik Untuk Rakaman Skrin Desktop Di Linux
- 15 Petua dan Trik Perintah 'Sed' berguna untuk tugas pentadbiran sistem Linux setiap hari »