Cara Mengizinkan AWK Menggunakan Variabel Shell - Bagian 11

Cara Mengizinkan AWK Menggunakan Variabel Shell - Bagian 11

Saat kami menulis skrip shell, kami biasanya menyertakan program atau perintah kecil lainnya seperti AWK Operasi dalam skrip kami. Dalam kasus AWK, kita harus menemukan cara untuk memberikan beberapa nilai dari shell ke operasi AWK.

Ini dapat dilakukan dengan menggunakan variabel shell dalam perintah awk, dan di bagian seri ini, kita akan belajar bagaimana membiarkan AWK menggunakan variabel shell yang mungkin berisi nilai yang ingin kita lewati ke perintah awk.

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

1. Menggunakan Shell Quoting

Mari kita lihat contoh untuk menggambarkan bagaimana Anda benar -benar dapat menggunakan shell mengutip untuk mengganti nilai variabel shell dalam perintah awk. Dalam contoh ini, kami ingin mencari a nama belakang di file /etc/passwd, Saring dan cetak informasi akun pengguna.

Oleh karena itu, kita dapat menulis a tes.SH skrip dengan konten berikut:

#!/bin/bash #Read input pengguna baca -p "Harap masukkan nama pengguna:" Nama pengguna #Search untuk nama pengguna di/etc/passwd file dan cetak detail pada layar kucing/etc/passwd | awk "/ $ username/" 'print $ 0' 

Setelah itu, simpan file dan keluar.

Interpretasi perintah awk di tes.SH skrip di atas:

Cat /etc /passwd | awk "/ $ username/" 'print $ 0' 

"/ $ username/" - Kutipan shell digunakan untuk mengganti nilai variabel shell nama belakang dalam perintah awk. Nilai dari nama belakang adalah pola yang akan dicari dalam file /etc/passwd.

Perhatikan bahwa kutipan ganda berada di luar skrip awk, 'cetak $ 0'.

Kemudian buat skrip dapat dieksekusi dan jalankan sebagai berikut:

$ chmod +x tes.sh $ ./teks.SH 

Setelah menjalankan skrip, Anda akan diminta untuk memasukkan a nama belakang, ketik A valid nama belakang dan memukul Memasuki. Anda akan melihat detail akun pengguna dari /etc/passwd file seperti di bawah ini:

Skrip shell untuk menemukan nama pengguna dalam file kata sandi

2. Menggunakan Tugas Variabel AWK

Metode ini jauh lebih sederhana dan lebih baik dibandingkan dengan metode di atas. Mempertimbangkan contoh di atas, kita dapat menjalankan perintah sederhana untuk mencapai pekerjaan. Di bawah metode ini, kami menggunakan -v opsi untuk menetapkan variabel shell ke variabel awk.

Pertama, buat variabel shell, nama belakang dan tetapkan nama yang ingin kami cari di /etc/passswd mengajukan:

nama pengguna = "Aaronkilis" 

Kemudian ketikkan perintah di bawah ini dan tekan Enter:

# Cat /etc /passwd | awk -v name = "$ username" '$ 0 ~ name print $ 0' 
Temukan Nama Pengguna dalam File Kata Sandi Menggunakan AWK

Penjelasan dari perintah di atas:

  1. -v - Opsi awk untuk mendeklarasikan variabel
  2. nama belakang - adalah variabel shell
  3. nama - adalah variabel awk

Mari kita perhatikan $ 0 ~ Nama Di dalam skrip AWK, '$ 0 ~ name print $ 0'. Ingat, ketika kami membahas operator perbandingan AWK di bagian 4 dari seri ini, salah satu operator perbandingannya adalah nilai ~ Pola, yang berarti: Benar jika nilai cocok dengan pola.

Itu output ($ 0) dari perintah kucing yang disalurkan untuk mencocokkan pola (Aaronkilik) yang merupakan nama yang kami cari /etc/passwd, Akibatnya, operasi perbandingan itu 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. Sering kali, 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, kami akan menyelami bagian kritis lain dari fitur AWK, yaitu pernyataan kontrol aliran. Jadi nantikan dan mari kita terus belajar dan berbagi.