Grep command atau perintah grep merupakan bagian dari sistem operasi Unix dan dikenal sebagai salah satu tool penting yang serba guna. Fungsi dari tool ini adalah untuk melakukan pencarian sebuah pattern dalam file teks yang telah dibuat. Dengan kata lain, penggunaan command grep mempermudah Anda dalam mencari kata atau pattern dan satu atau lebih line yang kemudian akan ditampilkan.
Mencari kata pada suatu file
grep keyword nama_file
grep 07/14/2020:12:20:30 access_log
Mencari Kata Tanpa Memerhatikan Besar Kecilnya Huruf
grep -i keyword nama_file
grep -i PAsswOrdstrengTH access_log
Target Query untuk Mengetahui Jumlah Kata
grep -c keyword nama_file
grep -c admdoni access_log
Mencari dua Keyword
cat nama_file | grep keyword1 | grep keyword2
cat access_log | grep 2020:09:51:30 | grep passwordstrength
contoh lain
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Mencari Sebuah Kata di Kumpulan File
grep keyword /target_directory
grep 2020:09:51:30 /usr/local/cpanel/logs/*
Atau jika Anda ingin melakukan pencarian kata pada direcotry secara recursive dan menampilkan line number kata tersebut maka bisa menggunakan parameter grep -inr
Grep Tampilkan Hanya Nama File
Untuk menekan output grep default dan hanya mencetak nama file yang berisi pola yang cocok Anda dapat menggunakan opsi -l
(atau --files-with-matches
).
Misalnya untuk mencari melalui semua file yang diakhiri dengan .conf
di direktori kerja saat ini dan hanya mencetak nama-nama file yang berisi tipe string example.com
:
grep -l example.com *.conf
Outputnya akan terlihat seperti ini:
tmux.conf
haproxy.conf
Opsi -l
biasanya digunakan dalam kombinasi dengan opsi rekursif atau -R
:
grep -Rl example.com /tmp
Grep Regular Expression
GNU Grep memiliki dua set fitur regular expression, Basic dan Extended. Secara default Grep menginterpretasikan pola sebagai regular expression Basic, untuk beralih ke regular expression yang Extended, Anda perlu menggunakan opsi -E
.
Ketika digunakan dalam mode regular expression basic, semua karakter lain kecuali metakarakter, sebenarnya adalah regular expression yang cocok dengan dirinya sendiri. Di bawah ini adalah daftar karakter meta yang paling umum digunakan:
- Gunakan simbol
^
(caret) untuk mencocokkan ekspresi pada awal baris. Berikut ini, contoh string^banteng
hanya akan cocok kata itu ada di awal baris.grep "^banteng" file.txt
- Gunakan simbol
$
(dollar) untuk mencocokkan ekspresi di akhir baris. Pada contoh berikut, stringanoa$
hanya akan cocok jika kata itu terjadi di akhir baris.grep "banteng$" file.txt
- Gunakan simbol
.
(titik) untuk mencocokkan karakter tunggal apa pun. Misalnya, untuk mencocokkan apa pun yang dimulai denganban
kemudian memiliki dua karakter dan diakhiri dengan stringng
, Anda dapat menggunakan pola berikut:grep "ban..ng" file.txt
- Gunakan
[ ]
untuk mencocokkan karakter tunggal apa saja yang ada di dalam tanda kurung. Misalnya, temukan baris yang berisiaccept
atauaccent
, Anda dapat menggunakan pola berikut:grep "acce[np]t" file.txt
- Gunakan [
^
] untuk mencocokkan setiap karakter tunggal yang terlampir di dalam tanda kurung. Pola berikut akan cocok dengan kombinasi string yang mengandung co (huruf_apapun_kecuali_l
) a, seperticoca
,cobalt
dan sebagainya, tetapi tidak akan cocok dengan baris yang mengandung katacola
,grep "co[^l]a" file.txt
Untuk menghindari makna khusus dari karakter berikutnya, gunakan simbol \
(garis miring terbalik).
Grep Extended Regular Expression
Untuk menginterpretasikan pola sebagai extended regular expression, gunakan opsi -E
(atau --extended-regexp
). Extended regular expressions mencakup semua meta-karakter dasar, bersama dengan meta-karakter tambahan untuk membuat pola pencarian yang lebih kompleks dan kuat. Di bawah ini adalah beberapa contoh:
- Cocokkan dan ekstrak semua alamat email dari file yang diberikan:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
- Cocokkan dan ekstrak semua alamat IP yang valid dari file yang diberikan:
grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file.txt
Opsi -o
digunakan untuk mencetak hanya string yang cocok.
Grep Print Baris Sebelum Kecocokan
Untuk mencetak sejumlah baris tertentu sebelum mencocokkan baris, gunakan opsi -B
(atau --before-context
).
Misalnya, untuk menampilkan 5 baris konteks pertama sebelum mencocokkan baris, Anda dapat menggunakan perintah berikut:
grep -B 5 root /etc/passwd
Grep Print Baris setelah Kecocokan
Untuk mencetak sejumlah baris tertentu setelah ada kecocokan, gunakan opsi -A
(atau --after-context
).
Misalnya untuk menampilkan 5 baris dari konteks setelah baris yang cocok, Anda dapat menggunakan perintah berikut
grep -A 5 root /etc/passwd