Belirli kalıpların aranması - grep, egrep ve fgrep komutları

Başlatan Suat, 26 Nisan 2016 - 12:36:42

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Suat

Karakterlerden oluşan belirli kalıpların bir veya daha fazla dosya içinde aranması olasıdır. Bu tür bir arama işlemi grep, egrep veya fgrep komutları yardımıyla gerçekleştirilebilir. Komutlar şu şekilde tanımlanıyor.

    grep  [seçeneklerifade   [dosya...]
   egrep  [seçeneklerifade   [dosya...]
   fgrep  [seçeneklerdizgi   [dosya...]

Bu komutlarla kullanılabilecek seçeneklerin bazıları aşağıda yer almaktadır.

Grep komutu bir kalıbı dosyalar içinde aramasına karşılık, egrep komutu aynı işlemlerin yanı sıra bazı ilave işlemleri de gerçekleştirebilir. Egrep komutu yardımıyla, ''+'' işaretiyle biten ifadeler bir veya daha fazla sayıda karşılaştırılabilir. Buna karşılık ''-'' işareti ile biten ifadeler sıfır veya bir kere karşılaştırılabilir. Birbirinden ''|'' veya newline karakteri ile ayrılmış ifadelerden biri veya diğeri karşılaştırma işlemine sokulabilir. Son olarak, bu ifade parantez içine alınarak gruplandırılabilir. Fgrep komutu ise, newline ile ayrılmış dizgileri içeren dosyaları araştırmak amacıyla kullanılır.


-v          Aranılan kalıbın bulunamadığı satırları görüntüler
-c          Aranılan kalıbın toplam kaç satırda yer aldığını görüntüler.
-i           Küçük harf/büyük harf ayrımı yapmaz.
-l           Aranılan kalıbın bulunduğu dosya isimlerini görüntüler.
-n           Bulunan satırlar dosya içindeki satır numaralarıyla birlikte görüntülenir.
-b           Bulunan satırların blok numaralarını listeler
-s           Dosya bulunamadığı veya okunamadığı zaman, hata mesajları verilmesi istenmiyorsa bu seçenek tercih edilir.
-e ifade    ''-'' ile başlayan ifadelere izin verir. Egrep ve fgrep komutlarıyla birlikte kullanılabilir.
-f dosya   Bir dosyanın içerdiği ifadeleri bir başka dosya içinde aramak amacıyla tercih edilebilir. Egrep veya fgrep komutları ile birlikte kullanılabilir.

Egrep ve fgrep komutları, aynen grep komutunda olduğu gibi dosyalardan belirli kalıpların aranması amacıyla kullanılabilir. Bulunan her satır ekranda görüntülenir. Egrep tarafından kullanılan kalıplar düzgün ifadeler şeklindedir. Buna karşılık fgrep ile sabit dizgiler araştırılır. Bu durumda -e seçeneği sadece egrep ile kullanılabilir. Fgrep ile aranılan ifadelerin tırnak işaretleri arasında kullanılması tavsiye edilir.

Örnek

Grep komutu kullanarak arama işlemine başlamadan önce,  /etc/passwd dosyasının içeriğini görüntüleyin.

   $ cat passwd
   root: 4OjrVVMcJDzPU:0:1::/:/bin/sh
   startup:GXoXF9Z2pACGw:0:1::/:/va/script/multi.sh
   shutdown:rWmEdg9EfPH2.:0:1::/:va/script/shutdown.sh
   daemon:*no login*:1:1::/usr/src:
   uucp:tnTLyg.dmOabM:6:6:uucp administrative login:/usr/lib/uucp:
   nuucp:sH7U:7:6::/usr/spool/uucppublic:/usr/lib/uucp/uucico
   bordro:B5ygQ2i5lIuPw:101:103::/usr/acct/bordro:/bin/sh
   personel:RZ3niD3Q:102:103::/usr/acct/personel:/bin/sh
   muhasebe:/ro3TGY,01BE:115:103::/usr/acct/muhasebe:/bin/sh
   begum:asdasDF78:122:103::/usr/acct/begum:/bin/sh
   oracle:y8iXYQTvW5OtA:105:105::/appl/oracle:/bin/sh
   $ _

Parola dosyasında yer alan begum isimli kullanıcıya ait satırı grep komutuyla belirlemek istiyoruz. Komut şu şekilde kullanılabilir.

   $ grep begum /etc/passwd
   begum:asdasDF78:122:103::/usr/acct/begum:/bin/sh
   $ _

Örnek

liste isimli dosyanın aşağıdaki satırları içerdiğini varsayalım.

   $ cat liste
   Yalcin OZKAN:1998:401
   Mehmet SAYSEL:1975:401
   Aynur KUCUKYILMAZ:1978:300
   Gulser DONDURMACI:1981:350
   Etem KESKIN:1980:401
   Zeki KUCUK:1975:300
   Pervin OZKAN:1989:300
   Begum OZKAN:1990:350
   Ali OZYACICI:1975:350
   $ _

Bu durumda Etem ismini içermeye satırları görüntülemek için grep komutu şu şekilde kullanılabilir.

   $ grep -v Etem liste
   Yalcin OZKAN:1998:401
   Mehmet SAYSEL:1975:401
   Aynur KUCUKYILMAZ:1978:300
   Gulser DONDURMACI:1981:350
   Zeki KUCUK:1975:300
   Pervin OZKAN:1989:300
   Begum OZKAN:1990:350
   Ali OZYACICI:1975:350
   $ _

Etem kalıbının tüm dosyalar içinde aranmasını sağlamak ve bulunan dosya isimlerini görüntülemek üzere,

   $  grep -l Etem *
   liste
   telefon
   $ _

komutu kullanılabilir.

Örnek

liste dosyası içinde hem a hem de A karakterini içeren satırları belirlemek için grep komutuyla birlikte [aA] seçeneği kullanılabilir

   $  grep [aA] liste
   Yalcin OZKAN:1998:401
   $ _

Bu işlemin tersini yapmak için, yani içinde a ve A karakterlerini içermeyen satırları bulmak için -v seçeneği tercih edilebilir.

   $  grep -v [aA] liste
   Yalcin OZKAN:1998:401
   Mehmet SAYSEL:1975:401
   Aynur KUCUKYILMAZ:1978:300
   Gulser DONDURMACI:1981:350
   Zeki KUCUK:1975:300
   Pervin OZKAN:1989:300
   Begum OZKAN:1990:350
   Ali OZYACICI:1975:350
   $ _

Örnek

Dosya içinde aranılan satırlar -n seçeneğini kullanmak suretiyle satır numaralarıyla birlikte görüntülenebilir.

   $ grep -n OZKAN liste
   1:Yalcin OZKAN:1988:401
   7:Pervin OZKAN:1989:300
   8:Begum OZKAN:1990:350
   $ _

Eğer blok numaraları görüntülenmemesi isteniyorsa -b seçeneği kullanılır.

   $ grep -n OZKAN liste
   0:Yalcin OZKAN:1988:401
   0:Pervin OZKAN:1989:300
   0:Begum OZKAN:1990:350
   $ _

Faydalı link: http://wiki.ubuntu-tr.net/index.php?title=Grep_komutu_kullan%C4%B1m%C4%B1

ahmet_matematikci

♥ Kız tavlamak için kahraman olmak gerekmez. Doğru kadın zaten sizi kahraman yapar ;)