Apa Perbedaan Antara Grep, Egrep dan Fgrep di Linux?


Salah satu alat pencarian terkenal pada sistem mirip Unix yang dapat digunakan untuk mencari apa pun baik itu file, atau satu baris atau beberapa baris dalam file adalah utilitas grep. Fungsionalitasnya sangat luas yang dapat dikaitkan dengan sejumlah besar opsi yang didukungnya seperti: pencarian menggunakan pola string, atau pola reg-ex atau reg-ex berbasis Perl, dll.

Karena fungsinya yang beragam, ia memiliki banyak varian termasuk grep, egrep (Extend GREP), fgrep (GREP Tetap), pgrep (GREP Proses), rgrep (GREP Rekursif) dll. Namun varian ini memiliki sedikit perbedaan dengan grep asli yang menjadikannya populer dan digunakan oleh berbagai pemrogram Linux untuk tugas tertentu.

Hal utama yang masih harus diselidiki adalah apa perbedaan antara ketiga varian utama yaitu 'grep', 'egrep' dan 'fgrep' dari grep yang membuat pengguna Linux memilih satu atau versi lain sesuai kebutuhan.

Beberapa Karakter Meta Khusus dari grep

  1. + – Setara dengan satu atau lebih kemunculan karakter sebelumnya.
  2. ? – Ini menunjukkan hampir 1 pengulangan karakter sebelumnya. Seperti: a? Akan cocok dengan 'a' atau 'aa'.
  3. ( – Awal ekspresi pergantian.
  4. ) – Akhir dari ekspresi pergantian.
  5. | – Mencocokkan salah satu ekspresi yang dipisahkan oleh '|'. Misalnya: “(a|b)cde ” akan cocok dengan 'abcde' atau 'bbcde'.
  6. { – Karakter meta ini menunjukkan permulaan penentu rentang. Seperti: “a{2} ” cocok dengan “aa ” dalam file yaitu a sebanyak 2 kali.
  7. } – Meta-karakter ini menunjukkan penentu akhir rentang.

Perbedaan Antara grep, egrep dan fgrep

Beberapa perbedaan utama antara grep, egrep dan fgrep dapat disorot sebagai berikut. Untuk kumpulan contoh ini kami mengasumsikan file tempat operasi dilakukan adalah:

Perintah Grep

grep atau Global Regular Expression Print adalah program pencarian utama pada sistem mirip Unix yang dapat mencari jenis string apa pun pada file apa pun atau daftar file atau bahkan keluaran apa pun memerintah.

Disarankan Baca: 12 Contoh Praktis Perintah grep Linux

Ia menggunakan Ekspresi Reguler Dasar selain string normal sebagai pola penelusuran. Dalam Basic Regular Expressions (BRE), meta-karakter seperti: '{','}','(',')','|','+','?' kehilangan maknanya dan diperlakukan sebagai karakter normal dari string dan perlu di-escape jika ingin diperlakukan sebagai karakter khusus .

Saran Baca: 11 Perintah 'Grep' Tingkat Lanjut pada Kelas Karakter dan Ekspresi Braket

Selain itu, grep menggunakan algoritma Boyer-Moore untuk mencari string atau ekspresi reguler apa pun dengan cepat.

grep -C 0 '(f|g)ile' check_file
grep -C 0 '\(f\|g\)ile' check_file

Seperti di sini, ketika perintah dijalankan tanpa keluar dari '(' ')' dan '|' maka ia akan mencari string lengkap yaitu “(f|g )ile ” dalam file. Namun ketika karakter khusus di-escape, alih-alih memperlakukannya sebagai bagian dari string, grep memperlakukannya sebagai karakter meta dan mencari kata “file ” atau “gile ” dalam berkas.

Perintah Egrep

Egrep atau grep -E adalah versi lain dari grep atau Extended grep. Versi grep ini efisien dan cepat ketika mencari pola ekspresi reguler karena memperlakukan meta-karakter apa adanya dan tidak menggantikannya sebagai string seperti di grep, dan karenanya Anda terbebas dari beban untuk menghindarinya sebagai di grep. Ini menggunakan ERE atau kumpulan Extended Regular Expression.

Dalam kasus egrep, meskipun Anda tidak lolos dari karakter meta, ia akan memperlakukannya sebagai karakter khusus dan menggantikannya dengan makna khusus alih-alih memperlakukannya sebagai bagian dari string.

egrep -C 0 '(f|g)ile' check_file
egrep -C 0 '\(f\|g\)ile' check_file

Seperti di sini, egrep mencari string “file ” ketika karakter meta tidak di-escape seperti yang dimaksud dengan arti karakter tersebut. Namun, ketika karakter-karakter ini di-escape, maka egrep memperlakukannya sebagai bagian dari string dan mencari string lengkap “(f|g)ile ” di dalam file.

Perintah fgrep

Fgrep atau Fixed grep atau grep -F adalah versi lain dari grep yang cepat dalam pencarian saat mencari seluruh string alih-alih ekspresi reguler karena tidak mengenali ekspresi reguler, tidak juga karakter meta apa pun. Untuk mencari string langsung apa pun, ini adalah versi grep yang harus dipilih.

Fgrep mencari string lengkap dan bahkan tidak mengenali karakter khusus sebagai bagian dari ekspresi reguler meskipun lolos atau tidak.

fgrep -C 0 '(f|g)ile' check_file
fgrep -C 0 '\(f\|g\)ile' check_file

Seperti, ketika meta-karakter tidak di-escape, fgrep mencari string lengkap “(f|g)ile ” di file, dan ketika meta-karakter di-escape, maka perintah fgrep mencari “\(f\|g\)ile ” semua karakter seperti yang ada di file.

Kami telah membahas beberapa contoh praktis perintah grep, Anda dapat membacanya di sini, jika Anda ingin memaksimalkan perintah grep di Linux.

Pelajari 12 Contoh Praktis Perintah grep Linux

Kesimpulan

Yang disorot di atas adalah perbedaan antara 'grep', 'egrep' dan 'fgrep'. Terlepas dari perbedaan dalam rangkaian ekspresi reguler yang digunakan, dan kecepatan eksekusi, parameter baris perintah lainnya tetap sama untuk ketiga versi grep dan bahkan alih-alih “egrep” atau “fgrep”, “grep -E” atau “grep - F ” direkomendasikan untuk digunakan.

Jika Anda menemukan perbedaan lain antara ketiga versi grep ini, sebutkan di komentar Anda.