Ketahui cara menggunakan pembolehubah terbina dalam AWK - Bahagian 10

- 1877
- 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.

Terbina 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.txt

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.txt

$ AWK 'end print "Bilangan rekod dalam fail adalah:", nr' ~/domain.txt

Untuk mengira bilangan medan dalam rekod atau baris, kami menggunakan pembolehubah terbina dalam NR seperti berikut:
$ kucing ~/nama.txt

$ awk 'print "rekod:", nr, "mempunyai", nf, "fields"; '~/nama.txt

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 /Passwd

Secara pilihan, kita juga boleh memanfaatkan Fs
Pembolehubah terbina dalam seperti di bawah:
$ awk 'bermula fs = ":"; cetak $ 1, $ 4; ' /etc /passwd

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 /Passwd

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 »