grep
adalah alat baris perintah canggih yang memungkinkan Anda mencari satu atau beberapa file input untuk baris yang cocok dengan ekspresi reguler dan menulis setiap baris yang cocok ke output standar.
Dalam artikel ini, kami akan menunjukkan cara menggunakan GNU grep
untuk mencari beberapa string atau pola.
Grep Banyak Pola #
GNU grep
mendukung tiga sintaks ekspresi reguler, Basic, Extended, dan Perl-compatible. Ketika tidak ada tipe ekspresi reguler yang ditentukan, grep
menafsirkan pola penelusuran sebagai ekspresi reguler dasar.
Untuk mencari beberapa pola, gunakan operator OR (alternation).
Operator pengganti |
(pipe) memungkinkan Anda untuk menentukan kemungkinan kecocokan yang berbeda yang dapat berupa string literal atau kumpulan ekspresi. Operator ini memiliki prioritas terendah dari semua operator ekspresi reguler.
Sintaks untuk mencari beberapa pola menggunakan grep
ekspresi reguler dasar adalah sebagai berikut:
grep 'pattern1\|pattern2' file...
Selalu sertakan ekspresi reguler dalam tanda kutip tunggal untuk menghindari interpretasi dan perluasan karakter meta oleh shell.
Saat menggunakan ekspresi reguler dasar, karakter meta ditafsirkan sebagai karakter literal. Untuk menjaga arti khusus dari meta-karakter, mereka harus diloloskan dengan garis miring terbalik (\
). Inilah sebabnya mengapa kami keluar dari operator OR (|
) dengan garis miring.
Untuk menafsirkan pola sebagai ekspresi reguler yang diperluas, aktifkan grep
-E
( atau --extended-regexp
) pilihan. Saat menggunakan ekspresi reguler yang diperluas, jangan lepas |
operator:
grep -E 'pattern1|pattern2' file...
Untuk informasi selengkapnya tentang cara membuat ekspresi reguler, lihat artikel kami Grep regex.
Grep Banyak String #
String literal adalah pola paling dasar.
Dalam contoh berikut, kami mencari semua kemunculan kata fatal
, error
, dan critical
dalam file kesalahan log Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Jika string yang Anda cari menyertakan spasi, tutup dengan tanda kutip ganda.
Berikut adalah contoh yang sama menggunakan ekspresi reguler yang diperluas, yang menghilangkan kebutuhan untuk keluar dari operator |
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Secara default, grep
peka huruf besar/kecil. Ini berarti bahwa karakter huruf besar dan kecil diperlakukan berbeda.
Untuk mengabaikan huruf besar/kecil saat mencari, aktifkan grep with
-i
opsi (atau --ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
Saat mencari string, grep
akan menampilkan semua baris di mana string tertanam dalam string yang lebih besar. Jadi jika Anda mencari “kesalahan”, grep
juga akan mencetak baris di mana "kesalahan" disematkan dalam kata-kata yang lebih besar, seperti "tanpa kesalahan" atau "antiteroris".
Untuk mengembalikan hanya baris di mana string yang ditentukan adalah seluruh kata (diapit oleh karakter non-kata), gunakan -w
( atau --word-regexp
) pilihan:
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
Karakter kata termasuk karakter alfanumerik (a-z, A-Z, dan 0-9) dan garis bawah (_). Semua karakter lain dianggap sebagai karakter non-kata.
Untuk detail lebih lanjut tentang grep
pilihan, kunjungi artikel kami perintah Grep.
Kesimpulan #
Kami telah menunjukkan cara grep
untuk mencari beberapa pola, string, dan kata.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.