grep adalah perintah untuk mencetak setiap baris masukan yang memuat pola tertentu, baik pola berupa kata biasa maupun regex (regular expression, ekspresi reguler), yaitu notasi pencarian berpola. Masukannya dapat berupa berkas, beberapa berkas sekaligus, atau aliran dari pipe. Topik ini membahas pencarian dasar, opsi -v, -c, -n, dan -i, dasar regex, pencarian ke seluruh direktori dengan -r, serta kode kembali yang dilaporkan grep.
Pencarian baris dengan pola#
Penggunaan paling umum adalah grep POLA BERKAS: grep membaca berkas baris demi baris, lalu mencetak setiap baris yang memuat pola, apa pun posisi pola tersebut dalam baris. Contoh berikut memakai berkas log-lab.txt yang berisi catatan masuk dan keluar pengguna laboratorium beserta dua pesan sistem. Pencarian pertama mengambil semua baris kegiatan login, sedangkan pencarian kedua mengambil pesan dari sistem.
# menyiapkan folder kerja dan berkas contoh
mkdir -p /tmp/kerja-grep
cd /tmp/kerja-grep
printf '2026-11-02 08:12 ali login\n2026-11-02 08:15 budi login\n2026-11-02 08:40 ali logout\n2026-11-02 09:02 citra login\n2026-11-02 09:10 budi logout\n2026-11-02 09:30 sistem peringatan: suhu tinggi\n2026-11-02 09:45 dewi login\n2026-11-02 10:00 citra logout\n2026-11-02 10:05 sistem pemulihan: suhu normal\n2026-11-02 10:20 dewi logout\n' > log-lab.txt
cat log-lab.txt2026-11-02 08:12 ali login
2026-11-02 08:15 budi login
2026-11-02 08:40 ali logout
2026-11-02 09:02 citra login
2026-11-02 09:10 budi logout
2026-11-02 09:30 sistem peringatan: suhu tinggi
2026-11-02 09:45 dewi login
2026-11-02 10:00 citra logout
2026-11-02 10:05 sistem pemulihan: suhu normal
2026-11-02 10:20 dewi logoutcd /tmp/kerja-grep
# mencari semua baris kegiatan login
grep 'login' log-lab.txt
# mencari semua baris dari sistem
grep 'sistem' log-lab.txt2026-11-02 08:12 ali login
2026-11-02 08:15 budi login
2026-11-02 09:02 citra login
2026-11-02 09:45 dewi login
2026-11-02 09:30 sistem peringatan: suhu tinggi
2026-11-02 10:05 sistem pemulihan: suhu normalPencarian grep bersifat substring, yaitu kecocokan yang berlaku pada potongan teks apa pun di dalam baris, bukan hanya pada kata utuh. Pola login karenanya dicocokkan ke bagian mana pun dari baris, sedangkan baris yang tidak memuatnya dilewati begitu saja. Apabila nama berkas tidak diberikan, grep membaca stdin, sehingga perintah ini pas diletakkan di tengah rangkaian pipe.
Membalik dan menghitung dengan -v dan -c#
Opsi -v membalik hasil pencocokan: grep mencetak baris yang tidak memuat pola. Opsi ini berguna untuk membuang baris yang tidak relevan, misalnya menghilangkan semua kegiatan login dan logout sekaligus karena keduanya memuat kata log.
cd /tmp/kerja-grep
# menampilkan baris yang tidak memuat kata log
grep -v 'log' log-lab.txt2026-11-02 09:30 sistem peringatan: suhu tinggi
2026-11-02 10:05 sistem pemulihan: suhu normalOpsi -c tidak mencetak baris kecocokan, melainkan hitungan banyaknya baris yang cocok. Hitungannya per baris, bukan per kemunculan kata, sehingga satu baris yang memuat pola dua kali tetap dihitung satu.
cd /tmp/kerja-grep
# menghitung banyaknya baris kegiatan login
grep -c 'login' log-lab.txt4Kedua opsi dapat digabungkan: grep -vc 'log' log-lab.txt menghitung baris yang tidak memuat kata log, dan hasilnya 2 sesuai jumlah pesan sistem pada contoh.
Nomor baris dan huruf besar-kecil#
Opsi -n menambahkan nomor baris asal di depan setiap kecocokan. Nomor ini membantu ketika hasil pencarian akan ditelusuri kembali di berkas yang panjang, misalnya untuk mengetahui lokasi persis sebuah pesan.
cd /tmp/kerja-grep
# menampilkan kecocokan beserta nomor barisnya
grep -n 'sistem' log-lab.txt6:2026-11-02 09:30 sistem peringatan: suhu tinggi
9:2026-11-02 10:05 sistem pemulihan: suhu normalOpsi -i membuat pencarian tidak membedakan huruf besar dan huruf kecil. Tanpa opsi ini, pola SISTEM tidak menemukan apa pun karena kata sistem pada berkas ditulis dengan huruf kecil.
cd /tmp/kerja-grep
# pencarian tanpa membedakan huruf besar-kecil
grep -i 'SISTEM' log-lab.txt2026-11-02 09:30 sistem peringatan: suhu tinggi
2026-11-02 10:05 sistem pemulihan: suhu normalKedua opsi dapat digabungkan dengan opsi lain tanpa urutan yang ketat, misalnya grep -in 'sistem' log-lab.txt yang sekaligus menampilkan nomor baris dan mengabaikan perbedaan huruf. Bentuk berdampingan seperti -ni memiliki makna yang sama. Kombinasi seperti ini biasa dipakai saat menelusuri berkas yang penulisannya tidak konsisten.
Dasar regex#
Pola grep dapat berisi notasi khusus yang dikenal sebagai regex. Empat notasi dasar mencakup banyak kebutuhan sehari-hari: tanda ^ menandai awal baris, tanda $ menandai akhir baris, tanda titik . mewakili tepat satu karakter apa pun, dan tanda kurung siku [ ] mewakili satu karakter dari kelompok yang ditulis di dalamnya.
cd /tmp/kerja-grep
# baris yang dimulai dengan stempel waktu jam 09
grep '^2026-11-02 09' log-lab.txt
# baris yang diakhiri kata login
grep 'login$' log-lab.txt
# baris yang memuat huruf b atau d
grep '[bd]' log-lab.txt2026-11-02 09:02 citra login
2026-11-02 09:10 budi logout
2026-11-02 09:30 sistem peringatan: suhu tinggi
2026-11-02 09:45 dewi login
2026-11-02 08:12 ali login
2026-11-02 08:15 budi login
2026-11-02 09:02 citra login
2026-11-02 09:45 dewi login
2026-11-02 08:15 budi login
2026-11-02 09:10 budi logout
2026-11-02 09:45 dewi login
2026-11-02 10:20 dewi logoutPola 'login$' berbeda dari pola 'login' biasa karena hanya menerima kata di akhir baris, sehingga baris yang memuat logout tidak pernah cocok. Secara bawaan grep memakai notasi dasar (BRE, basic regular expression), sedangkan opsi -E mengaktifkan notasi lanjutan (ERE, extended regular expression) yang memungkinkan pilihan bergantian seperti 'login|logout'.
Mencari ke seluruh direktori dengan -r#
Opsi -r memerintahkan grep menelusuri sebuah direktori beserta seluruh isinya secara berulang. Keluarannya diberi awalan nama berkas asal, sehingga terlihat jelas kecocokan itu ditemukan di mana. Contoh berikut menelusuri folder catatan yang berisi tiga berkas kecil.
cd /tmp/kerja-grep
# menyiapkan folder catatan berisi tiga berkas
mkdir -p catatan
printf 'ide: cadangan mingguan\n' > catatan/ide.txt
printf 'rapat: presentasi hasil lab\n' > catatan/rapat.txt
printf 'belanja: kertas dan tinta\n' > catatan/belanja.txt
# menelusuri folder catatan secara berulang
grep -r 'tinta' catatancatatan/belanja.txt:belanja: kertas dan tintaBila kecocokan tersebar di beberapa berkas, setiap berkas menyumbang baris kecocokannya sendiri, lengkap dengan awalan nama berkas. Penelusuran berulang mencakup pula subfolder di dalam folder yang diberikan, sehingga struktur bersarang tetap dapat ditelusuri tanpa perintah tambahan. Apabila tidak ada kecocokan di seluruh folder, grep selesai tanpa keluaran dan melaporkan kode kembali 1, sama seperti pencarian pada satu berkas. Opsi ini lazim dipakai untuk mencari sebuah nama fungsi atau pesan error di dalam pohon kode sumber tanpa perlu tahu letak berkasnya.
Kode kembali dan kecocokan yang tidak ditemukan#
grep melaporkan hasil pencariannya bukan hanya melalui keluaran, tetapi juga melalui kode kembali. Kode 0 berarti ditemukan kecocokan, kode 1 berarti tidak ada kecocokan, dan kode 2 berarti terjadi error, misalnya berkas tidak ada. Perilaku ini membuat grep dapat dipakai sebagai pengujian di dalam skrip shell.
cd /tmp/kerja-grep
# mencari kata yang tidak ada dalam berkas
grep zebra log-lab.txt
# mencetak kode kembali perintah terakhir
echo "kode kembali: $?"kode kembali: 1Tidak ada baris yang dicetak oleh grep karena kecocokan tidak ada, tetapi kode kembali 1 memberi tahu bahwa pencarian berjalan normal dan memang gagal menemukan apa pun. Kondisi ini berbeda dari error sesungguhnya yang dilaporkan dengan kode 2.
Kesalahan umum#
Kesalahan pertama adalah meninggalkan pola tanpa tanda kutip. Pola yang memuat karakter khusus seperti $, *, atau spasi dapat diurai shell lebih dahulu, sehingga yang diterima grep berbeda dari yang dimaksud. Kebiasaan memberi tanda kutip sejak awal mencegah kesalahan semacam ini.
Kesalahan kedua adalah menafsirkan keluaran -c sebagai banyaknya kemunculan kata. Opsi tersebut menghitung baris yang cocok, sehingga satu baris berisi lima kata yang sama tetap bernilai satu. Untuk menghitung kemunculan kata secara persis, keluaran grep perlu diolah lebih lanjut, misalnya dengan opsi -o. Opsi -o mencetak setiap kecocokan pada barisnya sendiri, sehingga hasilnya dapat dihitung oleh wc -l. Kesalahan ketiga adalah lupa opsi -r ketika sasaran pencarian berupa folder. Tanpa -r, grep membaca folder sebagai masukan, lalu melaporkan error Is a directory dengan kode kembali 2.
Ringkasan#
- grep mencetak setiap baris yang memuat pola, baik dari berkas maupun dari stdin pada rangkaian pipe.
- Opsi
-vmembalik pilihan menjadi baris yang tidak cocok,-cmenghitung baris kecocokan,-nmenambahkan nomor baris, dan-imengabaikan perbedaan huruf besar-kecil. - Notasi regex dasar mencakup
^untuk awal baris,$untuk akhir baris,.untuk satu karakter apa pun, dan[ ]untuk kelompok karakter. - Opsi
-rmenelusuri direktori secara berulang dengan awalan nama berkas pada keluaran, sedangkan kode kembali 0, 1, dan 2 melaporkan kecocokan, ketiadaan kecocokan, dan error.
Referensi#
- GNU Grep Manual — GNU Project — Dokumentasi resmi GNU grep mengenai pola, regex, dan seluruh opsi baris perintah.