Grep atau Global Regular Expression Print digunakan untuk mencari teks atau pola dalam sistem Linux. Itu dapat mencari di file, direktori, dan bahkan output dari perintah lain.
Ekspresi reguler adalah pola yang dapat mencocokkan teks sesuai dengan kebutuhan pengguna. Ini seperti aturan untuk pencocokan pola.
Grep sering digunakan bersama dengan ekspresi reguler untuk mencari pola dalam teks. Mari kita lihat beberapa contoh praktis regex dengan grep.
1. Mencocokkan kata terlepas dari kasusnya
Terkadang dalam sebuah teks, kata yang sama dapat ditulis dengan cara yang berbeda. Ini paling sering terjadi dengan kata benda yang tepat. Alih-alih dimulai dengan huruf besar, terkadang ditulis dengan huruf kecil semua.
$ grep "[Jj]ayant"
Kedua versi kata tersebut, terlepas dari kasusnya, telah dicocokkan.
Kasus menarik lainnya dapat diamati dengan kata 'IoT'. Kata seperti ini mungkin muncul beberapa kali di seluruh teks dengan variasi yang berbeda. untuk mencocokkan semua kata terlepas dari penggunaan kasus :
$ grep "[iI][oO][tT]"
2. Mencocokkan nomor ponsel menggunakan regex dengan grep
Ekspresi reguler dapat digunakan untuk mengekstrak nomor ponsel dari teks.
Format nomor ponsel harus diketahui terlebih dahulu. Misalnya, ekspresi reguler yang dirancang untuk mencocokkan nomor ponsel tidak akan berfungsi untuk nomor telepon rumah.
Dalam contoh ini, nomor ponsel dengan format berikut:91-1234567890 (yaitu TwoDigit-TenDigit) akan dicocokkan.
$ grep "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}"
Terbukti, hanya nomor ponsel dalam format yang disebutkan di atas yang cocok.
3. Cocokkan alamat email
Mengekstrak alamat email dari teks sangat berguna dan dapat dilakukan dengan menggunakan grep.
Alamat email memiliki format tertentu. Bagian sebelum '@' adalah nama pengguna yang mengidentifikasi kotak surat. Lalu ada domain seperti gmail.com atau yahoo.in.
Ekspresi reguler dapat dirancang dengan mengingat hal-hal ini.
$ grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"
- [A-Za-z0-9._%+-]+ menangkap nama pengguna sebelum '@'
- [A-Za-z0-9.-]+ menangkap nama domain tanpa bagian '.com'
- .[A-Za-z]{2,6} menangkap '.com' atau '.in' dll.
4. Pemeriksa URL
URL memiliki format representasi tertentu. Regex dapat dibuat untuk memverifikasi apakah URL dalam bentuk yang benar atau tidak.
URL harus dimulai dengan http/https/ftp diikuti dengan '://'. Lalu ada nama domain yang bisa diakhiri dengan '.com', '.in', '.org' dll.
$ grep -E "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})"
-E digunakan dalam contoh ini dan sebelumnya menandakan grep diperpanjang yang menggunakan set Ekspresi Reguler Diperpanjang alih-alih set Ekspresi Reguler Dasar. Ini berarti bahwa karakter khusus tertentu tidak perlu diloloskan. Itu membuat proses penulisan regex yang kompleks tidak terlalu melelahkan. Baca selengkapnya di sini.
5. Menemukan file dengan ekstensi tertentu
Perintah ls menampilkan semua file di direktori saat ini.
menjalankan ls -l memberikan informasi tambahan mengenai file. Grep dapat digunakan bersama dengan perintah ls -l untuk mencocokkan pola dalam outputnya.
Untuk mengambil file yang disimpan dengan ekstensi '.txt' gunakan:
$ ls -l | grep '.txt$'
6. Temukan konten dalam tanda kurung
Seringkali file teks memiliki konten dalam tanda kurung. Kita dapat mengekstraknya menggunakan regex dengan grep.
$ grep "([A-Za-z ]*)"
Regex akan memilih teks yang ada di dalam paratesis. Panjang konten dalam tanda kurung juga dapat ditentukan.
Misalnya, Untuk mencocokkan tanda kurung dengan hanya 10 karakter gunakan :
$ grep "([A-Za-z ]{10})"
7. Mencocokkan baris yang dimulai dengan kata tertentu
Kita dapat menggunakan regex untuk menemukan baris yang dimulai dengan kata tertentu.
Untuk menemukan baris yang dimulai dengan kata Apel gunakan :
grep '^Apples' input.txt
Demikian pula, baris yang dimulai dengan kata lain juga dapat ditemukan.
Kita dapat mencocokkan baris yang diakhiri dengan kata tertentu menggunakan ekspresi reguler di bawah ini.
$ grep 'apples.$' input.txt
8. Mencocokkan beberapa kata sekaligus
Mari kita cocokkan beberapa kata dengan regex seperti yang ditunjukkan di bawah ini:
$ grep 'Apples\|Orange' input.txt
Perintah ini bekerja dengan garis OR di antara dua kata. Ini cocok dengan baris yang berisi salah satu dari dua kata tersebut.
Untuk melakukan AND di antara dua kata, gunakan:
$ grep 'Apple' input.txt | grep 'Orange
9. Mencocokkan kata yang sama dalam bentuk yang berbeda
Terkadang sebuah kata dapat muncul dalam bentuk yang berbeda. Mereka dapat berbeda berdasarkan tense yang mereka gunakan.
Peeled dan Peeling adalah contohnya. Dalam kedua kata tersebut, akar kata adalah 'kupas'
Kita dapat menggunakan regex untuk mencocokkan semua bentuk kata.
Dalam teks kami, kami telah mengeja peeled dan peeling masing-masing sebagai pealed dan pealing.
Kami juga dapat menerjemahkan dari Bahasa Inggris AS ke Bahasa Inggris Inggris dengan cara yang sama. Misalnya, kata warna menjadi warna.
$ grep 'peal\([a-z]*\)\(\.*[[:space:]]\)' input.txt
10. Mencari pengguna di file /etc/passwd
grep dapat digunakan untuk mendapatkan pengguna dari file /etc/passwd/. File /etc/passwd menyimpan daftar pengguna pada sistem bersama dengan beberapa informasi tambahan.
$ grep "Adam" /etc/passwd
Perintah menggunakan grep pada file sistem. Ketika kata “Adam” ditemukan, kita dapat melihat baris sebagai output. Kami dapat melakukan pencarian yang sama untuk elemen lain dalam file.
Kesimpulan
Regex bersama dengan perintah grep bisa sangat kuat. Regex dipelajari sebagai bidang terpisah dalam ilmu komputer dan dapat digunakan untuk mencocokkan pola yang sangat kompleks. Pelajari lebih lanjut tentang regex di sini.