Apa perbezaan antara Grep, Egrep dan Fgrep di Linux?

Apa perbezaan antara Grep, Egrep dan Fgrep di Linux?

Salah satu alat carian terkenal pada sistem seperti Unix yang boleh digunakan untuk mencari apa-apa sama ada ia menjadi fail, atau baris atau baris berbilang dalam fail adalah utiliti grep. Ia sangat luas dalam fungsi yang boleh dikaitkan dengan sejumlah besar pilihan yang disokongnya seperti: mencari menggunakan corak rentet.

Perbezaan antara grep, egrep dan fgrep di linux

Oleh kerana fungsi yang berbeza -beza, ia mempunyai banyak varian termasuk grep, Egrep (Grep dilanjutkan), fgrep (Grep tetap), pgrep (Proses grep), rgrep (Grep rekursif) dan lain-lain. Tetapi varian ini mempunyai perbezaan kecil untuk asal grep yang telah menjadikan mereka popular dan digunakan oleh pelbagai pengaturcara Linux untuk tugas tertentu.

Perkara utama yang masih perlu disiasat ialah perbezaan antara tiga varian utama i.e. 'Grep', 'Egrep' dan 'fgrep' grep yang menjadikan pengguna Linux memilih satu atau versi lain mengikut keperluan.

Beberapa meta-akhbar grep khas

  1. + - Bersamaan dengan satu atau lebih kejadian watak sebelumnya.
  2. ? - Ini menandakan hampir 1 pengulangan watak sebelumnya. Seperti: a? Akan sepadan 'a' atau 'aa'.
  3. ( - Permulaan ungkapan penggantian.
  4. ) - Akhir ungkapan penggantian.
  5. | - Memadankan salah satu ungkapan yang dipisahkan oleh '|'. Seperti: "(A | b) cde" akan sepadan dengan sama ada 'Abcde' atau 'bbcde'.
  6. - Meta-watak ini menunjukkan permulaan julat. Seperti: "A 2" perlawanan "AA" dalam fail i.e. A 2 kali.
  7. - Meta-watak ini menunjukkan akhir penipisan julat.

Perbezaan antara grep, egrep dan fgrep

Beberapa perbezaan utama antara grep, Egrep dan fgrep boleh diserlahkan seperti berikut. Untuk contoh -contoh ini, kami menganggap fail di mana operasi sedang dilakukan:

Perintah Linux Grep

Perintah grep

grep atau Cetakan ungkapan biasa global adalah program carian utama pada sistem seperti Unix yang boleh mencari jenis rentetan pada sebarang fail atau senarai fail atau output dari mana-mana arahan.

Cadangan Baca: 12 Contoh Praktikal Perintah Linux Grep

Ia menggunakan Ekspresi biasa asas selain dari rentetan biasa sebagai corak carian. Dalam Ungkapan Biasa Asas (BRE), meta-aksara seperti: '', '','(', ')','|','+','?' longgar maknanya dan dianggap sebagai watak biasa rentetan dan perlu dilepaskan jika mereka dianggap sebagai watak khas.

Cadangan Baca: 11 Advance 'Grep' Perintah pada Kelas Karakter dan Ekspresi Kurungan

Juga, Grep menggunakan algoritma Boyer-Moore untuk mencari rentetan atau ungkapan biasa yang cepat.

$ grep -c 0 '(f | g) ile' check_file $ grep -c 0 '\ (f \ | g \) ile' check_file 
Contoh Perintah Linux Grep

Seperti di sini, ketika arahan dijalankan tanpa melarikan diri '(")' dan '|' Kemudian ia mencari rentetan lengkap i.e. "(F | g) ile" dalam fail. Tetapi apabila watak-watak khas melarikan diri, maka bukannya merawatnya sebagai sebahagian daripada rentetan, Grep memperlakukan mereka sebagai meta-karakter dan mencari kata-kata "Fail" atau "Gile" dalam fail.

Perintah Egrep

Egrep atau grep -E adalah versi grep lain atau grep lanjutan. Versi grep ini adalah cekap dan pantas ketika mencari corak ekspresi biasa kerana ia merawat meta-karakter seperti itu dan tidak menggantikannya sebagai rentetan seperti di grep, dan oleh itu anda dibebaskan dari beban melarikan diri mereka sebagai di grep. Ia menggunakan ERE atau set ekspresi biasa yang dilanjutkan.

Sekiranya EGREP, walaupun anda tidak melarikan diri dari meta-karakter, ia akan memperlakukan mereka sebagai watak khas dan menggantikannya untuk makna istimewa mereka dan bukannya merawatnya sebagai sebahagian daripada rentetan.

$ egrep -c 0 '(f | g) ile' check_file $ egrep -c 0 '\ (f \ | g \) ile' check_file 
Contoh perintah Linux Egrep

Seperti di sini, Egrep dicari "Fail" rentetan ketika meta-aksara tidak melarikan diri seperti maksudnya dengan makna watak-watak ini. Tetapi, apabila watak -watak ini melarikan diri, maka Egrep merawatnya sebagai sebahagian daripada rentetan dan mencari rentetan lengkap "(F | g) ile" dalam fail.

perintah fgrep

Fgrep atau Grep tetap atau grep -f adalah satu lagi versi grep yang cepat mencari ketika datang untuk mencari seluruh rentetan dan bukannya ungkapan biasa kerana ia tidak mengenali ungkapan biasa, sama ada mana. Untuk mencari rentetan langsung, ini adalah versi grep yang harus dipilih.

Carian fgrep untuk rentetan lengkap dan bahkan tidak mengenali aksara khas sebagai sebahagian daripada ungkapan biasa walaupun melarikan diri atau tidak melarikan diri.

$ fgrep -c 0 '(f | g) ile' check_file $ fgrep -c 0 '\ (f \ | g \) ile' check_file 
Contoh Perintah Linux Fgrep

Suka, ketika meta-karakter tidak melarikan diri, fgrep mencari rentetan lengkap "(F | g) ile" dalam fail, dan apabila meta-aksara melarikan diri, maka perintah fgrep dicari "\ (F \ | g \) ile" Semua watak seperti dalam fail.

Kami sudah meliputi beberapa contoh praktikal perintah grep, anda boleh membacanya di sini, jika anda ingin mendapatkan lebih banyak perintah grep di linux.

Ketahui 12 Contoh Praktikal Perintah Linux Grep

Kesimpulan

Di atas yang diserlahkan adalah perbezaan antara 'Grep', 'Egrep' dan 'fgrep'. Selain daripada perbezaan dalam set ekspresi biasa yang digunakan, dan kelajuan pelaksanaan, parameter baris perintah tetap sama untuk semua tiga versi grep dan bahkan bukan "egrep" atau "fgrep", "grep -e" atau "grep - F "disyorkan untuk digunakan.

Sekiranya anda menemui perbezaan lain antara tiga versi grep ini, nyatakannya dalam komen anda.