Aduh

Cara menggunakan array dalam perintah awk

Cara menggunakan array dalam perintah awk
Pembolehubah array digunakan untuk menyimpan lebih daripada satu data. Ia disokong oleh kebanyakan bahasa pengaturcaraan untuk menyimpan banyak data. Susunan mempunyai dua bahagian. Ini adalah kunci dan nilai. Kunci digunakan untuk mengakses lokasi nilai. Susunan boleh berangka dan bersekutu. Susunan angka hanya menyokong nilai angka sebagai kunci dan tatasusunan bersekutu menyokong kedua-dua angka dan nilai indeks sebagai kunci. Susunan bersekutu disokong oleh perintah awk. Bagaimana anda dapat menentukan, mengakses atau mengubah susunan bersekutu dalam perintah awk ditunjukkan dalam tutorial ini dengan menggunakan pelbagai contoh.

Sintaks:

arrayName [Key] = Nilai

Nama mesti dinyatakan untuk pemboleh ubah array. Nama array adalah nama susunan di sini. Setiap array mesti menggunakan kurungan ketiga untuk menentukan kunci atau indeks dan ia akan menjadi nilai rentetan untuk array bersekutu. Nilai boleh berupa watak, nombor atau rentetan yang akan disimpan dalam indeks larik tertentu.

Contoh-1: Mendefinisikan dan membaca susunan satu dimensi dalam awk

Susunan satu dimensi dapat menyimpan senarai data lajur tunggal. Jenis array ini mengandungi satu kunci dan nilai untuk setiap elemen array.  Array ini boleh digunakan dalam perintah awk seperti bahasa pengaturcaraan lain. Dalam contoh ini, array dinamakan buku dinyatakan dengan tiga elemen dan untuk gelung digunakan untuk membaca dan mencetak setiap elemen. Jalankan arahan berikut dari terminal.

$ gema | awk 'BEGIN book ["HTML"] = "Panduan Pocket HTML 2010";
buku ["JS"] = "JavaScript Berkesan";
buku ["CSS"] = "Pembelajaran Reka Bentuk Web";
TAMAT untuk (saya dalam buku) mencetak "Buku", i, "is", buku [i]; '

Pengeluaran:

Contoh-2: Mendefinisikan dan membaca susunan dua dimensi dalam awk

Susunan dua dimensi digunakan untuk menyimpan senarai data jadual yang mengandungi bilangan baris dan lajur yang tetap. Susunan dua dimensi yang dinamakan pelajar dinyatakan dalam contoh ini yang mengandungi tiga elemen. Di sini, id dan nama pelajar digunakan sebagai nilai utama array. Seperti contoh sebelumnya, for-in loop digunakan dalam skrip awk untuk mencetak nilai array. Jalankan skrip berikut dari terminal.

$ gema | awk 'BEGIN
pelajar ["87462, Mohammed Ali"] = 87;
pelajar ["98376, Sakib Al Hasan"] = 99;
pelajar ["79937, Musfikur Rahman"] = 88;
cetak "(ID, Nama) => Tanda";

TAMAT untuk (i pada pelajar) cetak "(", i, ") =>", pelajar [i]; '

Pengeluaran:

Contoh-3: Memadamkan elemen array

Sebarang nilai array boleh dihapus berdasarkan nilai utama. Di sini, buku susunan dengan tiga unsur didefinisikan pada awal skrip. Seterusnya, nilai kunci HTML dihapuskan dengan menggunakan padam perintah. Nilai elemen bagi HTML kunci dicetak sebelum dan selepas padam perintah. Jalankan arahan berikut untuk memeriksa output.

$ gema | awk 'BEGIN book ["HTML"] = "Panduan Pocket HTML 2010";
buku ["JS"] = "JavaScript Berkesan";
buku ["CSS"] = "Pembelajaran Reka Bentuk Web";
cetak "Sebelum Padam -", tempah ["HTML"];
padamkan buku ["HTML"];
cetak "\ nSelepas Hapus -", ​​tempah ["HTML"]; '

Pengeluaran:

Output menunjukkan bahawa nilai HTML indeks kosong selepas melaksanakan padam perintah.

Contoh-4: Membaca array bash dalam awk

Dalam contoh sebelumnya, susunan dinyatakan dalam perintah awk dan diulang oleh gelung masuk.  Tetapi anda boleh membaca sebarang bash array dengan skrip awk. Dalam contoh ini, array bash dinamakan lang dinyatakan dalam perintah pertama. Dalam perintah kedua, nilai array bash diteruskan ke perintah awk yang menyimpan semua elemen ke dalam array awk bernama awkArray. Nilai array awkArray dicetak dengan menggunakan loop. Jalankan arahan berikut dari terminal untuk memeriksa output.

$ lang = ("PHP" "ASP" "JSP" "C #" "C ++")
$ printf '% s \ n' "$ lang [@]" | awk 'awkArray [NR] = $ 1 TAMAT untuk
(i dalam awkArray) cetak awkArray [i], "\ n"; '

Contoh-5: Membaca kandungan fail ke dalam array awk

Kandungan fail apa pun boleh dibaca dengan menggunakan array awk. Buat fail teks bernama burung.txt dengan kandungan yang diberikan di bawah.

burung.txt

Koktel
Puyuh
Burung Nuri Kelabu
Baazigar

Skrip awk berikut digunakan untuk membaca kandungan burung.txt fail dan simpan nilai dalam tatasusunan, awkArray. untuk gelung digunakan untuk mengurai susunan dan mencetak nilai di terminal. Jalankan skrip berikut dari terminal.

$ awk 'awkArray [kaunter ++] = $ 1; TAMAT untuk (n = 0; ncetak awkArray [n], "\ n"; ' burung.txt

Pengeluaran:

Skrip mencetak kandungan burung.txt.

Contoh-6: Mengeluarkan entri pendua dari fail

skrip awk dapat digunakan untuk membuang data pendua dari sebarang fail teks. Buat fail teks bernama buah-buahan.txt dengan kandungan berikut. Terdapat dua data pendua dalam fail. Ini adalah epal dan Jingga.

buah-buahan.txt

epal
Jingga
Anggur
epal
Pisang
Jingga
Jambu batu

Skrip awk berikut akan membaca setiap baris dari fail teks, buah-buahan.txt dan periksa garis semasa ada atau tidak dalam array, arr. Sekiranya garis itu ada dalam array maka ia tidak akan menyimpan baris dalam array dan tidak akan mencetak nilai di terminal. Jadi, skrip hanya akan menyimpan baris unik dari fail ke dalam array dan dicetak. Jalankan arahan dari terminal.

$ buah-buahan kucing.txt
$ awk '!($ 0 dalam arr) print arr [$ 0], $ 0; buah-buahan.txt

Pengeluaran:

Yang pertama akan mencetak kandungan fail, buah-buahan.txt dan arahan kedua akan mencetak isi buah-buahan.txt setelah menghilangkan baris pendua dari fail.

Kesimpulan:

Tutorial ini menunjukkan pelbagai kegunaan susunan dalam skrip awk dengan menggunakan contoh yang berbeza dengan penjelasan. Susunan Bash dan kandungan fail teks apa pun juga dapat diakses dengan menggunakan array awk. Sekiranya anda baru dalam pengaturcaraan awk maka tutorial ini akan membantu anda mempelajari penggunaan array awk dari asas dan anda akan dapat menggunakan array dalam skrip awk dengan betul.

Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...
Cara menangkap dan streaming sesi permainan anda di Linux
Pada masa lalu, bermain permainan hanya dianggap sebagai hobi, tetapi seiring dengan berjalannya waktu, industri permainan menyaksikan pertumbuhan yan...