GNU/Linux >> Belajar Linux >  >> Linux

Dijelaskan! Perbedaan Antara Perintah grep, egrep, dan fgrep

Saya yakin Anda sudah akrab dengan perintah grep. Mungkin Anda menemukan istilah seperti egrep dan fgrep dalam beberapa diskusi forum internet dan bertanya-tanya apa perintah ini dan apakah itu terkait dengan grep.

Dalam tutorial ini, saya akan membahas varian grep yang menjelaskan perbedaan dan persamaannya.

Apa itu egrep dan fgrep? Apa perbedaan antara grep, egrep dan fgrep?

e di egrep adalah singkatan dari extended dan f di fgrep singkatan tetap. egrep memungkinkan penggunaan regex yang diperluas dan fgrep tidak mengizinkan regex sama sekali.

Semua ini akan lebih masuk akal segera ketika saya menjelaskannya dengan contoh.

Anda tahu bahwa grep berfungsi pada regex. Tapi itu tidak sepenuhnya benar.

Secara default, perintah grep bekerja pada ekspresi reguler dasar. Jika Anda ingin pencarian yang lebih kompleks, Anda perlu menggunakan ekspresi reguler yang diperluas. Lihat perbedaan antara regex dasar dan diperpanjang.

Perintah egrep memungkinkan penggunaan regex yang diperluas.

Perintah fgrep di sisi lain bekerja pada string tetap alih-alih regex. Ini berarti bahwa dibutuhkan pola pencarian seperti untuk pencarian dan dengan demikian lebih cepat daripada grep.

Meskipun, Anda mungkin masih melihat egrep dan fgrep di alam liar, status mereka tidak digunakan lagi. Banyak sistem masih menyertakan binari untuk varian ini.

Namun, sekarang standar POSIX menggunakan grep standar dengan flag opsi khusus (-E atau -F ). Tanda-tanda ini membantu grep standar meniru fungsionalitas setiap perintah masing-masing.

Untuk meringkas:

  • egrep dan fgrep adalah perintah yang tidak digunakan lagi dan harus dihindari.
  • egrep setara dengan grep -E perintah dan memungkinkan penggunaan regex yang diperluas.
  • fgrep setara dengan grep -F perintah dan menggunakan string tetap untuk pencarian dan karenanya melakukan pencarian lebih cepat.

Memahami perbedaan antara grep, egrep dan fgrep dengan contoh

Saya telah membuat file teks pendek untuk menunjukkan perbedaan antara varian grep ini.

[email protected]:~$ cat test.txt 
this is a tasty test

Perintah grep standar

Ini adalah versi standar grep yang dirancang untuk mencari pola menggunakan ekspresi reguler dasar. Menggunakan grep memerlukan pelolosan karakter meta untuk menghasilkan perilaku yang diharapkan.

Misalkan saya ingin mencari tast atau test . Ini yang bisa saya gunakan:

[email protected]:~$ grep 't\(a\|e\)st' test.txt

Perhatikan bagaimana Anda harus keluar dari tanda kurung? Ini jauh lebih mudah untuk dilihat dan dipahami dengan regex yang diperluas.

Grep Diperpanjang:Egrep atau grep -E

Egrep dibuat untuk memberikan diperpanjang dukungan untuk meta-karakter. Ini berarti bahwa ia lolos dari karakter khusus ini secara default. Ini menghemat waktu dan umumnya membuat ekspresi lebih mudah dibaca.

Perintah yang saya gunakan di atas dapat ditulis ulang agar lebih mudah dibaca:

[email protected]:~$ egrep 't(a|e)st' test.txt

Biner egrep tidak secara konsisten mendukung { karakter. Hal ini dapat mengakibatkan perilaku yang tidak terduga.

Beberapa versi egrep memungkinkan mereka untuk ditafsirkan dengan benar sebagai karakter literal jika diloloskan (\{ ). Namun, praktik terbaik untuk mencocokkan { liter literal adalah untuk melampirkan dalam tanda kurung siku [{] .

Grep Tetap:Fgrep atau grep -F

Profesional perangkat lunak tahu bahwa meskipun kemampuan komputasi telah meningkat pesat, pengoptimalan tidak pernah dapat diabaikan. Grep adalah alat yang sangat kuat, tetapi terkadang dapat menggunakan sumber daya sistem secara tidak perlu.

Dari sinilah ide grep tetap berasal. Perangkat lunak ini sangat ideal untuk kasus penggunaan di mana Anda harus mencocokkan string yang tepat.

Itu tidak menampilkan alat ekspresi yang kuat dari varian grep lainnya. Kelemahan itu sebenarnya adalah kekuatan supernya. Ini membuat alat ini lebih cepat.

Seperti yang saya sebutkan sebelumnya, Anda harus menghindari penggunaan egrep dan fgrep karena mereka adalah perintah yang tidak digunakan lagi. Menggunakan grep -E dan grep -F adalah jalan ke depan.

Saya harap Anda sekarang memiliki pemahaman yang lebih baik tentang grep, egrep dan fgrep. Jika Anda memiliki sesuatu untuk ditambahkan, jangan ragu untuk memberikan komentar.


Linux
  1. Perbedaan Antara Perintah Menghentikan dan Mematikan?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Perbedaan Antara .exrc Dan .vimrc?

  1. Perbedaan Antara '$ . Foo' Dan '$ ./foo'??

  2. Perbedaan Nss dan Pam?

  3. Perbedaan antara ${} dan $() di Bash

  1. Pelajari Perbedaan Antara Perintah "su" dan "su -" di Linux

  2. Apa perbedaan antara ls dan l?

  3. Perbedaan antara perintah 'ifconfig' dan 'ip'