Perintah grep Linux adalah utilitas pencocokan string dan pola yang menampilkan baris yang cocok dari beberapa file. Ini juga berfungsi dengan output yang disalurkan dari perintah lain. Kami tunjukkan caranya.
Perintah Grep di Linux
Perintah grep terkenal di kalangan Linux dan Unix karena tiga alasan. Pertama, ini sangat berguna. Kedua, banyaknya pilihan bisa sangat banyak. Ketiga, ditulis dalam semalam untuk memenuhi kebutuhan tertentu. Dua yang pertama sedang berlangsung; yang ketiga sedikit melenceng.
Ken Thompson telah mengekstraksi kemampuan pencarian ekspresi reguler dari editor ed (diucapkan ee-dee) dan membuat program kecil — untuk digunakan sendiri — untuk mencari melalui file teks. Kepala departemennya di Bell Labs, Doug Mcilroy, mendekati Thompson dan menjelaskan masalah yang dihadapi salah satu rekannya, Lee McMahon. Nbsp
McMahon mencoba mengidentifikasi penulis makalah Federalis melalui analisis tekstual. Dia membutuhkan alat yang dapat mencari frasa dan string dalam file teks. Thompson menghabiskan sekitar satu jam malam itu menjadikan alatnya sebagai utilitas umum yang dapat digunakan oleh orang lain dan menamainya menjadi grep. Dia mengambil nama dari string perintah ed g/re/p , yang diterjemahkan sebagai “pencarian ekspresi reguler global.”
Anda dapat menonton Thompson berbicara dengan Brian Kernighan tentang kelahiran grep.
Pencarian Sederhana dengan Perintah grep
Untuk mencari string di dalam file, berikan istilah pencarian dan nama file pada baris perintah:
Baris yang cocok ditampilkan. Dalam hal ini, ini adalah satu baris. Teks yang cocok disorot. Hal ini karena pada sebagian besar distribusi grep alias:
alias grep=’grep –colour=auto’
Mari kita lihat hasil di mana ada beberapa baris yang cocok. Kami akan mencari kata “Rata-rata” di file log aplikasi. Karena kami tidak dapat mengingat apakah kata tersebut menggunakan huruf kecil di file log, kami akan menggunakan opsi -i (abaikan huruf besar/kecil):
grep -i Rata-rata geek-1.log
Setiap baris yang cocok ditampilkan, dengan teks yang cocok disorot di masing-masing.
Kita dapat menampilkan garis yang tidak cocok dengan menggunakan opsi -v (invert match).
grep -v Mem geek-1.log
Tidak ada highlight karena ini adalah garis yang tidak cocok.
Kita dapat menyebabkan grep menjadi sepenuhnya diam. Hasilnya diteruskan ke shell sebagai nilai kembalian dari grep. Hasil nol berarti string ditemukan, dan hasil satu berarti string tidak ditemukan. Kita dapat memeriksa kode pengembalian menggunakan $?special parameter:
grep -q average geek-1.log
echo $?
grep -q howtogeek geek-1.log
echo $?
Pencarian Rekursif Menggunakan grep
Untuk mencari melalui direktori dan subdirektori bersarang, gunakan – opsi r (rekursif). Perhatikan bahwa Anda tidak memberikan nama file pada baris perintah, Anda harus memberikan jalur. Di sini kita sedang mencari di direktori saat ini “.” dan subdirektori apa pun:
grep -r -i memfree .
Outputnya mencakup direktori dan nama file dari setiap baris yang cocok.
Kita dapat membuat tautan simbolik grep follow dengan menggunakan opsi -R (dereferensi rekursif). Kami memiliki tautan simbolis di direktori ini, yang disebut folder log. Itu menunjuk ke /home/dave/logs.
ls -l logs-folder
Mari ulangi pencarian terakhir kita dengan opsi -R (dereferensi rekursif):
grep -R -i memfree .
Tautan simbolik diikuti dan direktori yang dituju dicari oleh grep juga.
Mencari Kata Utuh dengan Perintah grep
Secara default, grep akan mencocokkan sebuah baris jika target pencarian muncul di mana saja dalam baris tersebut, termasuk di dalam string lain. Lihatlah contoh ini. Kita akan mencari kata “free.”
grep -i free geek-1.log
Hasilnya adalah baris yang memiliki string “free” di dalamnya, namun bukan merupakan kata yang terpisah. Mereka adalah bagian dari string “MemFree.”
Untuk memaksa grep mencocokkan “kata” yang terpisah saja, gunakan opsi -w (word regexp).
grep -w -i free geek-1.log
echo $?
Kali ini tidak ada hasil karena istilah pencarian “gratis” tidak muncul dalam file sebagai kata terpisah.
Menggunakan Beberapa Istilah Pencarian
Opsi -E (regexp diperpanjang) memungkinkan Anda mencari beberapa kata. (Opsi -E menggantikan versi grep yang tidak digunakan lagi.)
Perintah ini mencari dua istilah pencarian, “rata-rata” dan “memfree.”
grep -E -w -i “rata-rata|memfree” geek-1.log
Semua baris yang cocok ditampilkan untuk setiap istilah pencarian.
Anda juga dapat mencari beberapa istilah yang belum tentu merupakan kata utuh, tetapi bisa juga berupa kata utuh.
Opsi -e (pola) memungkinkan Anda menggunakan beberapa istilah pencarian pada baris perintah. Kami menggunakan fitur tanda kurung ekspresi reguler untuk membuat pola pencarian. Ia memerintahkan grep untuk mencocokkan salah satu karakter yang terdapat dalam tanda kurung “[].” Ini berarti grep akan cocok dengan “kB” atau “KB” saat dicari.
Kedua string cocok, dan, pada kenyataannya, beberapa baris berisi kedua string.
Garis yang Cocok Tepat
The -x (regexp baris) hanya akan cocok dengan baris yang keseluruhannya baris cocok dengan istilah pencarian. Mari kita cari cap tanggal dan waktu yang kita tahu hanya muncul sekali di file log:
grep -x “20-Jan–06 15:24:35” geek-1.log
Satu baris yang cocok ditemukan dan ditampilkan .
Kebalikannya hanya menampilkan garis-garis yang tidak cocok. Ini dapat berguna ketika Anda sedang melihat file konfigurasi. Komentarnya bagus, tapi terkadang sulit menemukan pengaturan sebenarnya di antara semuanya. Berikut file /etc/sudoers:
Kami dapat secara efektif memfilter baris komentar seperti ini:
sudo grep -v “#” /etc/sudoers