intranet-grep

Grep

 

Grep UNIX'te bir dosya ve içerik arama / listeleme komutudur.

 

Grep Komutu ve Kullanımı

 

Grep'in komut yapısını basit olarak şu şekilde özetleyebiliriz:

grep [parametreler]  "Aranan İfade"  "Dosya ad ve adres(ler)i"

Aynı anda birden fazla parametre ve dosya kullanabiliriz.

Örnek:

 dosya1.txt

 dosya2.txt

 Sincan / Ankara

 Bandırma / Balıkesir

 Çayeli / Rize

 Suruç / Şanlıurfa

 Kavaklıdere / Ankara

 Çankaya / Ankara

grep -v "Ankara" dosya1.txt dosya2.txt

Bu komut dosya1.txt ve dosya2.txt içerisinde içerisinde "Ankara" ifadesi geçmeyen satırları listeler.

=> dosya1.txt:Bandırma / Balıkesir

=> dosya1.txt:Çayeli / Rize

=> dosya2.txt:Suruç / Şanlıurfa

 

* Dosyaların örnekteki gibi .txt uzantılı olma zorunluluğu yoktur.

 

Grep Parametreleri

-v

Komutun işlevini tersine çevirir. Yani belirlenen kriterlere uymayan satır veya dosyaları listelemekte kullanılır.

Örnek:

 dosya1

 İstanbul Erkek Lisesi

 Sütçü İmam Üniversitesi

 Dicle Teknik Üniversitesi

 Cağaloğlu Anadolu Lisesi

 Konya Selçuklu Üniversitesi

grep -v "Lise" dosya1

=> Sütçü İmam Üniversitesi

=> Dicle Teknik Üniversitesi

=> Konya Selçuklu Üniversitesi

 

-c

Belirlenen kriterlere uyan satır veya dosyaları listelemek yerine sadece esayısını gösterir.

Örnek:

 dosya1

 İstanbul Erkek Lisesi

 Sütçü İmam Üniversitesi

 Dicle Teknik Üniversitesi

 Cağaloğlu Anadolu Lisesi

 Konya Selçuklu Üniversitesi

grep -c "Lise" dosya1

=> 2

 

-i

Eşleştirmede büyük/küçük harf duyarlılığını kaldırır. Büyük veya küçük harf gözetmeksizin eşleşme gerçekleşir.

Örnek:

 dosya1

 İstanbul Erkek LiSesi

 Sütçü İmam Üniversitesi

 Dicle Teknik Üniversitesi

 Cağaloğlu Anadolu lisesi

 Konya Selçuklu Üniversitesi

 Mersin Atatürk LİSEsi

grep -i "Lise" dosya1

=> İstanbul Erkek LiSesi

=> Cağaloğlu Anadolu lisesi

=> Mersin Atatürk LISEsi

grep -c -i "Lise" dosya1

=> 3

 

-w

Sadece kelime olarak bağımsız eşleşmeleri listeler. Böylece "soz" diye arattığımızda "sozcuk", "sozel", "soz3" gibi ifadeler eşleşmez. Sadece "soz" ile eşleşir. Eşleşme gerçekleşebilmesi için kelimenin öncesinde ve sonrasında noktalama işareti veya boşluk dışında bir karakter bulunmaması gerekir.

Örnek:

 dosya1

 12 15 180

 123 600

 a12 a12

 555.12.666

grep -w "12" dosya1

=> 12 15 180

=> 555.12.666

 

-l

Satırlar yerine eşleşen ifadelerin bulunduğu dosyaların isimlerini listeler.

Örnek:

 dosya1

 dosya2

 dosya3

 Kırmızı Sarı Mavi

 Turuncu Yeşil Siyah

 Sarı Eflatun Beyaz

 Gri Turuncu Kırmızı

 Gri Siyah Yeşil

 Beyaz Mavi Eflatun

grep -l "Mavi" dosya1 dosya2 dosya3

=> dosya1

=> dosya3

Örnek:

/home/derya klasöründe içerisinde "Mavi" geçen dosyaları listelemek için;

grep -l "Mavi" /home/derya/*

 

-r

Verilen dizinin altdizinlerde de arama yapılması için kullanılır.

Örnek:

grep -l -r  "calc" /home/derya/projeler

 

-m [sayı]

Bu parametre ile istenen sayıda sonuca ulaşılınca grep komutu çalıştırmayı keser.

Örnek:

dosya1

 # Buzdolabı

 Fırın

 # Televizyon

 # Çamaşır Makinesi

grep -m 2 "#" dosya1

=> # Buzdolabı

=> # Televizyon

 

-n

Listelemede satır numarasını görebilmek için "-n" parametresini kullanabiliriz.

Örnek:

dosya1

 # Buzdolabı

 Fırın

 # Televizyon

 # Çamaşır Makinesi

grep -n "#" dosya1

=> 1:# Buzdolabı

=> 3:# Televizyon

=> 4:# Çamaşır Makinesi

 

Dosya / Dizin listeleme

Dosya ismine göre aratarak listeleme işlemi "ls" komutu ile gerçekleştirilir.

Örnek:

/home/derya dizini içerisinde isminde "ornek" geçen dosya ve klasörlerimizi listeleyelim.

ls /home/derya/* | grep ornek

 

* Daha gelişmiş bir arama işlemi için "ls -l" komutu yardımıyla dosyalarımızı örneğin adına, oluşturulduğu tarihe, bulunduğu dizine, boyutuna, yetki türlerine göre aratıp listeleyebiliriz.

 

Örnek-1:

İsminde "dosya" geçen dosyalarımızı listeleyelim.

ls -l | grep dosya

Örnek-2:

5 Temmuz 2011 Tarihinde oluşturulan dosya ve klasörleri listeleyelim.

ls -l | grep 11-07-05

 

 

Regular Expressions

 

. (Nokta) => Nokta (.) karakteri bütün karakterlerin yerine geçebilir. İlgili yerde bir karakter olması gerektiği anlamına gelir. Örneğin “A.B” ifadesi “ARB” , “ASB” , “A2B” veya “AzB” ve benzeri gibi bütün ifadelere eşittir.

Örnek:

 dosya1

 Buca / İzmir

 Ezine / Çanakkale

 Derince / İzmit

 Sarıkamış / Kars

grep "İzmi." dosya1

=> Buca / İzmir

=> Derince / İzmit

 

? => Soru işareti (?) karakteri aynı nokta gibi bütün karakterlerin yerine geçebilir, fakat aranan ifadede değil dosya adı ve adresi kısmında kullanılır. İlgili yerde bir karakter olması gerektiği anlamına gelir. Örneğin “dosya?.txt” ifadesi “dosya1.txt” , “dosyaX.txt” , “dosya!.txt” veya “dosyaa.txt” ve benzeri gibi bütün ifadelere eşittir.

Örnek:

asli.txt

avrasya.txt

anka.txt

kalem

kitap

kitap

defter

silgi

kitap

grep "kitap" a???.txt

=> asli.txt:kitap

=> anka.txt:kitap

 

 

[ ] => Köşeli parantezlerin içerisinde yer alan her karakter eşleşme sağlar. [abcd] ifadesi a, b, c ve d harfleriyle eşleşir.

Örnek-1:

 dosya1

 proje_deneme2.txt

 proje_deneme5.txt

 proje_deneme8.txt

 proje_deneme9.txt

grep "deneme[58].txt" dosya1

=> proje_deneme5.txt

=> proje_deneme8.txt

 

Örnek-2:

 dosyaA

 dosyaB

 dosyaC

 Kırmızı Sarı Mavi

 Turuncu Yeşil Siyah

 Sarı Eflatun Beyaz

 Gri Turuncu Kırmızı

 Gri Siyah Yeşil

 Beyaz Mavi Eflatun

grep "Mavi" dosya[A-F]

=> dosyaA:Kırmızı Sarı Mavi

=> dosyaB:Beyaz Mavi Eflatun

 

 

[^ ] => Köşeli parantezlerin içerisinde yer almayan bütün karakterler eşleşme sağlar. [^abcd] ifadesi a, b, c ve d harfleri dışında bütün karakterler ile eşleşir.

Örnek-1:

 dosya1

 proje_deneme2.txt

 proje_deneme5.txt

 proje_deneme8.txt

 proje_deneme9.txt

grep "deneme[^58].txt" dosya1

=> proje_deneme2.txt

=> proje_deneme9.txt

 

Örnek-2:

 dosya1

 dosya2

 dosya3

 Kırmızı Sarı Mavi

 Turuncu Yeşil Siyah

 Sarı Eflatun Beyaz

 Gri Turuncu Kırmızı

 Gri Siyah Yeşil

 Beyaz Mavi Eflatun

grep "Mavi" dosya[^1]

=> Beyaz Mavi Eflatun

 

 

^ => Satır başı belirteci. Sadece satır başında yer alan ifadelerde arama yapmayı sağlar.

Örnek:

 dosya1

 4. İstanbul Caz Festivali (12 Şubat 2011)

 İstanbul Üniversitesi Orkestrası Konseri (25 Mayıs 2011)

 Uluslararası İstanbul Sinema Haftası (04-11 Haziran 2011)

 İstanbul Bale Gösterisi (14 Kasım 2011)

grep "^İstanbul" dosya1

=> İstanbul Üniversitesi Orkestrası Konseri (25 Mayıs 2011)

=> İstanbul Bale Gösterisi (14 Kasım 2011)

 

 

$ => Satır sonu belirteci. Sadece satır sonunda yer alan ifadelerde arama yapmayı sağlar.

Örnek:

 dosya1

 23-07-2011

 2011-23-07

 Temmuz2011

 23-07-2011 Tarihi

grep "2011$" dosya1

=> 23-07-2011

=> Temmuz2011

 

 

* => Yıldız (*) karakteri kendisinden önce gelen ifadenin kaç defa geçtiğinin önemli olmadığını gösterir. Yani bir önceki karakter (veya karakter grubu), hiç geçmese de, bir defa geçse de, beş defa geçse de eşleşme gerçekleşir.

Örnek-1:

 dosya1

 ABC

 ABBBBBC

 A1C

 AC

grep "AB*C" dosya1

(Bu komut "B" harfinin hiç var olmaması durumunda da eşleştirme gerçekleştirecektir. "A" ile "C" arasında sadece "B" karakter(ler)i olan ya da hiç bir karakter olmayan bütün sonuçlar ile eşleşir.)

=> ABC

=> ABBBBBC

=> AC

 

Örnek-2:

 dosya1

 Malatya

 Millet

 Murat

 Milat

grep "M.*l.*t" dosya1

(Bu komut sadece içerisinde sırasıyla "M", "l" ve "t" harfleri geçen bütün ifadeler ile eşleşecektir.)

=> Malatya

=> Millet

=> Milat

 

Yıldız (*) karakteri dosya isminde arama yaparken, içerisinde belirli olmayan karakter dizisi yerine kullanılır. Kendisinden önceki karakterin önemi yoktur. Örneğin ab*d ifadesi ab ile başlayan adının son karakteri d olan metinleri temsil eder. "abd", "ab1111d", "abZd" benzeri bütün ifadeler ile eşleşir; fakat "ad" ile eşleşmez.

Örnek:

 dosya1.txt

 dosya.txt

 dokuman.txt

 Kırmızı Sarı Mavi

 Turuncu Yeşil Siyah

 Sarı Eflatun Beyaz

 Gri Turuncu Kırmızı

 Gri Siyah Yeşil

 Beyaz Mavi Eflatun

grep "Mavi" d*.txt

=> dosya1.txt:Kırmızı Sarı Mavi

=> dokuman.txt:Beyaz Mavi Eflatun

 

 

\< => Kelime başı belirteci. Sadece kendisinden önce boşluk veya nokta karakterleri gelen ifadeler ile eşleşme yapmak için kullanılır.

Örnek:

 dosya1

 123kelime

 0.kelimeler.

 kelime1

 iki kelime

grep "\<kelime" dosya1

=> 0.kelimeler

=> kelime1

=> iki kelime

 

 

\> => Kelime sonu belirteci. Sadece kendisinden sonra boşluk veya nokta karakterleri gelen ifadeler ile eşleşme yapmak için kullanılır.

Örnek:

 dosya1

 kelime111.a

 111 b

 111c

grep "111\>" dosya1

=> kelime111.a

=> 111 b

 

 

\( \| \) => \( \| \) operatörünü birden fazla seçenekten herhangi bir veya birkaç tanesinin bulunmasını istediğimiz takdirde kullanabiliriz.

Örnek-1:

dosya1

 Berna Esengül

 Mehmet Ersin Kömürcü

 Ahmet Yıldırım

 Yasemin Kılıç

grep "\(Ersin\|Ahmet\)" dosya1

=> Mehmet Ersin Kömürcü

=> Ahmet Yıldırım

 

Örnek-2:

 dosya1

 Macaristan Basketbol Takımı

 Amerikan Beyzbol Takımı

 İtalya Futbol Takımı

 Yunanistan Voleybol Takımı

grep "\(Basketbol\|Beyzbol\|Voleybol\)" dosya1

=> Macaristan Basketbol Takımı

=> Amerikan Beyzbol Takımı

=> Yunanistan Voleybol Takımı

 

\ => Aşağıdaki karakterler grep tarafından kullanılan özel karakterler kapsamına girer. Bu karakterlerin herbirisinin anlamı olduğundan dikkatli kullanılmaları gerekir.

.*[]^$\

Öncesinde ters slash “\” kullanarak özelliklerini etkisiz hale getirebiliriz. Örneğin;

grep "resim\.jpg" dosya1

Bu örnekte dosya1 içerisinde geçen “resim.jpg” ifadesini arıyoruz. "." karakteri özelliğini kaybediyor.

 

Karakter Sınıfları:

[[:alnum:]] Alfabetik harfler ve rakamları içerir. [a-z A-Z 0-9]

[[:alpha:]] Sadece Alfabetik karakterleri içerir. [a-z A-Z]

[[:blank:]] Boşluk (space ve tab) tuşlarını içerir.

[[:digit:]] Sadece numaraları içerir. [0-9]

[[:lower:]] Küçük harfleri içerir. [a-z]

[[:upper:]] Büyük harfleri içerir.[A-Z]

[[:punct:]] Noktalama işaretlerini içerir.

[[:space:]] Enter, tab, space, NL, CR, FF gibi tuşları içerir.

[[:graph:]] Enter, tab, space dışında görünen karakterleri içerir. [[:^space:]]

[[:print:]] Görünen bütün karakterleri içerir. [.]

[[:xdigit:]] Hexadecimal karakterleri içerir. [0-9 a-f A-F]