Ketahui cara menggunakan pembolehubah terbina dalam AWK - Bahagian 10
- 1839
- 568
- Clay Weber
Seperti yang kita dapati bahagian Awk Ciri-ciri, dalam bahagian siri ini, kita akan melalui konsep pembolehubah terbina dalam AWK. Terdapat dua jenis pembolehubah yang boleh anda gunakan dalam AWK, ini; Ditetapkan pengguna pembolehubah, yang kami tutupi dalam bahagian 8 dan terbina dalam pembolehubah.
Awk dibina dalam contoh pembolehubahTerbina dalam Pembolehubah mempunyai nilai yang telah ditakrifkan dalam Awk, Tetapi kita juga boleh mengubah nilai-nilai tersebut dengan teliti, pembolehubah terbina dalam termasuk:
NAMA FAIL
: Nama fail input semasa (jangan ubah nama berubah)Fr
: bilangan baris input semasa (iaitu garis input 1, 2, 3 ... SO, jangan ubah nama pembolehubah)Nf
: bilangan medan dalam baris input semasa (jangan ubah nama berubah)OFS
: pemisah medan outputFs
: pemisah medan inputORS
: pemisah rekod outputRs
: pemisah rekod input
Marilah kita teruskan untuk menggambarkan penggunaan beberapa pembolehubah terbina dalam AWK di atas:
Untuk membaca nama fail fail input semasa, anda boleh menggunakan NAMA FAIL
Pembolehubah terbina dalam seperti berikut:
$ awk 'cetak nama fail' ~/domain.txtPembolehubah nama fail AWK
Anda akan menyedari bahawa, nama fail dicetak untuk setiap baris input, iaitu tingkah laku lalai Awk semasa anda menggunakan NAMA FAIL
pemboleh ubah terbina dalam.
Menggunakan Nr
Untuk mengira bilangan baris (rekod) dalam fail input, ingatlah bahawa, ia juga mengira garis kosong, seperti yang akan kita lihat dalam contoh di bawah.
Apabila kita melihat fail tersebut Domain.txt Menggunakan perintah kucing, ia mengandungi 14 garis dengan teks dan kosong 2 garis:
$ kucing ~/domain.txtCetak kandungan fail
$ AWK 'end print "Bilangan rekod dalam fail adalah:", nr' ~/domain.txtAwk bilangan baris
Untuk mengira bilangan medan dalam rekod atau baris, kami menggunakan pembolehubah terbina dalam NR seperti berikut:
$ kucing ~/nama.txtSenaraikan kandungan fail
$ awk 'print "rekod:", nr, "mempunyai", nf, "fields"; '~/nama.txtAwk bilangan medan dalam fail
Seterusnya, anda juga boleh menentukan pemisah medan input menggunakan Fs
pemboleh ubah terbina dalam, ia mentakrifkan bagaimana Awk membahagikan garis input ke dalam medan.
Nilai lalai untuk Fs
adalah ruang dan tab, Tetapi kita boleh mengubah nilai Fs
kepada mana -mana watak yang akan mengarahkan AWK untuk membahagikan baris input dengan sewajarnya.
Terdapat dua kaedah untuk melakukan ini:
- Satu kaedah ialah menggunakan Fs pemboleh ubah terbina dalam
- dan yang kedua adalah untuk memohon -F Pilihan AWK
Pertimbangkan fail /etc/passwd Pada sistem Linux, medan dalam fail ini dibahagikan dengan menggunakan :
watak, jadi kita boleh menentukannya sebagai pemisah medan input baru apabila kita ingin menyaring medan tertentu seperti dalam contoh berikut:
Kita boleh menggunakan -F
pilihan seperti berikut:
$ awk -f ': "Print $ 1, $ 4;' /etc /PasswdMedan penapis awk dalam fail kata laluan
Secara pilihan, kita juga boleh memanfaatkan Fs
Pembolehubah terbina dalam seperti di bawah:
$ awk 'bermula fs = ":"; cetak $ 1, $ 4; ' /etc /passwdMedan penapis dalam fail menggunakan AWK
Untuk menentukan pemisah medan output, gunakan OFS
Pembolehubah terbina dalam, ia mentakrifkan bagaimana medan output akan dipisahkan menggunakan watak yang kami gunakan seperti dalam contoh di bawah:
$ awk -f ': "Begin ofs =" ==> "; Print $ 1, $ 4;' /etc /PasswdTambahkan pemisah ke medan dalam fail
Di dalam ini Bahagian 10, Kami telah meneroka idea menggunakan pembolehubah terbina dalam AWK yang dilengkapi dengan nilai yang telah ditetapkan. Tetapi kita juga boleh mengubah nilai -nilai ini, bagaimanapun, tidak disyorkan untuk melakukannya melainkan jika anda tahu apa yang anda lakukan, dengan pemahaman yang mencukupi.
Selepas ini, kita akan maju untuk menampung bagaimana kita boleh menggunakan pembolehubah shell dalam operasi perintah awk, oleh itu, terus berhubung dengan Tecmint.
- « Geary - pelanggan e -mel moden yang cantik untuk Linux
- Cumulus - aplikasi cuaca masa nyata untuk desktop linux »