Cara Mengizinkan Awk Menggunakan Variabel Shell - Bagian 11


Saat kami menulis skrip shell, kami biasanya menyertakan program atau perintah kecil lainnya seperti operasi Awk di skrip kami. Dalam kasus Awk, kita harus menemukan cara untuk meneruskan beberapa nilai dari shell ke operasi Awk.

Hal ini dapat dilakukan dengan menggunakan variabel shell dalam perintah Awk, dan di bagian seri ini, kita akan mempelajari cara mengizinkan Awk menggunakan variabel shell yang mungkin berisi nilai yang ingin kita teruskan ke perintah Awk.

Mungkin ada dua cara Anda dapat mengaktifkan Awk untuk menggunakan variabel shell:

1. Menggunakan Kutipan Shell

Mari kita lihat contoh untuk mengilustrasikan bagaimana Anda sebenarnya dapat menggunakan shell quoting untuk menggantikan nilai variabel shell dalam perintah Awk. Dalam contoh ini, kami ingin mencari nama pengguna di file /etc/passwd, memfilter dan mencetak informasi akun pengguna.

Oleh karena itu, kita dapat menulis skrip test.sh dengan konten berikut:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

Setelah itu, simpan file dan keluar.

Interpretasi perintah Awk pada skrip test.sh di atas:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

"/$username/ " – kutipan shell digunakan untuk menggantikan nilai variabel shell nama pengguna dalam perintah Awk. Nilai namapengguna adalah pola yang akan dicari dalam file /etc/passwd.

Perhatikan bahwa tanda kutip ganda berada di luar skrip Awk, ‘{ print $0 }’.

Kemudian buat skrip dapat dieksekusi dan jalankan sebagai berikut:

chmod  +x  test.sh
./text.sh 

Setelah menjalankan skrip, Anda akan diminta memasukkan nama pengguna, ketik nama pengguna yang valid dan tekan Enter. Anda akan melihat detail akun pengguna dari file /etc/passwd seperti di bawah ini:

2. Menggunakan Penugasan Variabel Awk

Cara ini jauh lebih sederhana dan lebih baik dibandingkan dengan cara satu di atas. Mengingat contoh di atas, kita dapat menjalankan perintah sederhana untuk menyelesaikan pekerjaan. Dalam metode ini, kita menggunakan opsi -v untuk menetapkan variabel shell ke variabel Awk.

Pertama, buat variabel shell, namapengguna dan berikan nama yang ingin kita cari di file /etc/passswd:

username="aaronkilik"

Kemudian ketik perintah di bawah ini dan tekan Enter:

cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Penjelasan dari perintah di atas:

  1. -v – Opsi awk untuk mendeklarasikan variabel
  2. nama pengguna – adalah variabel shell
  3. nama – adalah variabel Awk

Mari kita perhatikan $0 ~ name di dalam skrip Awk, ' $0 ~ name {print $0}'. Ingat, ketika kita membahas operator perbandingan Awk di Bagian 4 seri ini, salah satu operator perbandingan adalah pola nilai ~, yang artinya: benar jika nilai cocok dengan pola.

output($0) dari perintah cat yang disalurkan ke Awk cocok dengan pola (aaronkilik) yang merupakan nama yang kita cari di /etc/passwd , sebagai hasilnya, operasi perbandingannya benar. Baris yang berisi informasi akun pengguna kemudian dicetak di layar.

Kesimpulan

Kami telah membahas bagian penting dari fitur Awk, yang dapat membantu kami menggunakan variabel shell dalam perintah Awk. Seringkali, Anda akan menulis program atau perintah Awk kecil dalam skrip shell dan oleh karena itu, Anda perlu memiliki pemahaman yang jelas tentang cara menggunakan variabel shell dalam perintah Awk.

Di bagian selanjutnya dari seri Awk, kita akan mendalami bagian penting lainnya dari fitur Awk, yaitu pernyataan kontrol aliran. Jadi pantau terus dan mari terus belajar dan berbagi.