grep

Örneklerle Linux egrep Komutu

Örneklerle Linux egrep Komutu
egrep komutu, Linux'ta kalıp arama için kullanılan grep komut ailesine aittir. grep komutunu kullandıysanız, egrep, grep -E (grep Extended regex') ile aynı şekilde çalışır. Egrep belirli bir dosyayı satır satır tarar ve arama dizesini/normal ifadeyi içeren satırları yazdırır. Bu makalede, Linux'ta yeni başlayanların ve hatta uzmanların anlamlı aramalar yapmasına yardımcı olacak egrep komutlarının 15 faydalı örneğini açıklayacağız.Bu örnekleri bir Debian 10 Buster sisteminde gerçekleştirdik, ancak çoğu Linux dağıtımında kolayca çoğaltılabilirler.

Örnek 1: Bir dosyada belirli bir dizeyi aramak

Bu, egrep komutunun en yaygın kullanımıdır. Yaptığınız şey, aramak istediğiniz dizeyi ve bu dizeyi aramak istediğiniz dosya adını belirtmektir. Sonuç daha sonra aranan dizeyi içeren satırın tamamını görüntüler.

Sözdizimi:

$ egrep “search_string” dosya adı

Misal:

$ egrep debian örnek dosyası.Txt

Bu örnekte, belirtilen metin dosyasında “debian” kelimesini aradım. Sonuçların "debian" kelimesini içeren satırın tamamını nasıl gösterdiğini görebilirsiniz:

Örnek 2: Birden çok dosyada belirli bir dizeyi arama

egrep komutu ile aynı dizinde bulunan birden fazla dosya arasında bir dizi arama yapabilirsiniz. Aranan dosyalar için bir "kalıp" sağlama konusunda biraz daha spesifik olmanız yeterlidir. Bu, vereceğimiz örnekle daha da netleşecektir.

Sözdizimi:

$ egrep "search_string" filename_pattern

Misal:

Burada “debian” kelimesini tüm kelimelerde arayacağız .txt dosyaları, dosya adı desenini aşağıdaki gibi belirterek:

$ egrep “debian” *.Txt

Komut, tüm satırlardan “debian” kelimesini içeren dosya adlarıyla birlikte tüm satırları yazdırdı .Geçerli dizindeki txt dosyaları.

Örnek 3: Dizinin tamamında özyinelemeli olarak arama yapmak

Bir dizindeki ve alt dizinlerindeki tüm dosyalarda bir dize aramak istediğinizde, bunu -r bayrağını egrep komutuyla kullanarak yapabilirsiniz.

Sözdizimi:

$ egrep -r "arama_dizisi" *

Misal:

Bu örnekte, tüm geçerli(İndirilenler) dizininin dosyalarında "örnek" kelimesini arıyorum.

$ egrep -r "örnek" *

Sonuçlar, İndirilenler dizinindeki tüm dosyalardan ve alt dizinlerinden "örnek" kelimesini içeren dosya adlarıyla birlikte tüm satırları içerir.

Örnek 4:  Büyük/küçük harfe duyarlı olmayan bir arama gerçekleştirme

-i bayrağıyla, durumu hakkında endişelenmenize gerek kalmadan sonuçları bir arama dizesine dayalı olarak yazdırmak için egrep komutunu kullanabilirsiniz.

Sözdizimi:

$ egrep -i "search_string" dosya adı

Misal:

Burada, "debian" kelimesini arıyorum ve sonuçların, dosyadaki "debian" veya "Debian" kelimesini içeren tüm satırları, durumu ne olursa olsun, göstermesini istiyorum.

$ egrep -i "search_string" dosya adı

-i bayrağının, büyük/küçük harfe duyarlı olmayan bir arama yoluyla arama dizesini içeren tüm satırları getirmeme nasıl yardımcı olduğunu görebilirsiniz.

Örnek 5: Bir dizeyi alt dize olarak değil, tam kelime olarak arama

Normalde egrep aracılığıyla bir dize aradığınızda, dizeyi içeren tüm kelimeleri bir alt dize olarak yazdırır. Örneğin, "on" dizesini aramak "on", "yalnızca", "monitör", "klon" vb. gibi "on" dizesini içeren tüm kelimeleri yazdıracaktır. Sonuçların alt dize olarak değil de yalnızca "on" kelimesini tam kelime olarak göstermesini istiyorsanız, -w bayrağını egrep ile kullanabilirsiniz.

Sözdizimi:

$ egrep -w “search_string” dosya adı

Misal:

Burada örnek bir dosyada "on" dizesini arıyorum:

$ egrep -i “on” örnek dosyası.Txt

Yukarıdaki çıktıda “yalnızca” kelimesini de içerdiğini görebilirsiniz. Ancak, sadece “on” kelimesini aradığım için istediğim bu değil. Yani, bunun yerine kullanacağım komut bu:

$ egrep -iw “on” örnek dosyası.Txt

Artık arama sonuçlarım yalnızca tam bir kelime olarak “on” kelimesini içeren satırları içeriyor.

Örnek 6: Yalnızca dizeyi içeren dosya adlarını yazdırma

Bazen, onu içeren satırları yazdırmak yerine, yalnızca belirli bir dizeyi içeren dosya adlarını getirmek isteriz. Bu, egrep komutuyla -l (küçük harf L) bayrağı kullanılarak yapılabilir.

Sözdizimi:

$ egrep -l "search_string" filename_pattern

Misal:

Burada tüm dizilerde “örnek” dizesini arıyorum .Geçerli dizindeki txt dosyaları:

$ egrep -l örneği *.Txt

Arama sonuçları yalnızca belirtilen dizeyi içeren dosyaların adını yazdırır.

Örnek 7: Bir dosyadan yalnızca arama dizesini yazdırma

Arama dizesini içeren satırın tamamını yazdırmak yerine, dizenin kendisini yazdırmak için egrep komutunu kullanabilirsiniz. Dize, belirtilen dosyada göründüğü sayıda yazdırılacaktır.

Sözdizimi:

$ egrep -o "search_string" dosya adı

Misal:

Bu örnekte, dosyamda “Bu” kelimesini arıyorum.

$ egrep -o Bu örnek dosya_.Txt

Not: Komutun bu kullanımı, normal ifade kalıbına dayalı bir dize ararken kullanışlı olur. Gelecek örneklerden birinde düzenli ifadeleri ayrıntılı olarak açıklayacağız.

Örnek 8: Arama dizesinden önce, sonra veya çevresinde n sayıda satır görüntüleme

Bazen, belirli bir dizenin kullanıldığı bir dosyadaki bağlamı bilmek çok önemlidir. Egrep, arama dizesini içeren satırı ve ayrıca ondan önce, sonra ve çevreleyen belirli sayıda satırı görüntülemek için kullanılabilmesi açısından kullanışlıdır.

Bu, gelecek örnekleri açıklamak için kullanacağım örnek metin dosyasıdır:

N satır sayısı Arama dizesinden sonra:

A bayrağını aşağıdaki şekilde kullanmak, arama dizesini içeren satırı ve ondan sonraki N sayıda satırı görüntüler:

$ egrep -A "search_string" dosya adı

Misal:

$ egrep -A 2 "örnek" örnek dosyası.Txt

N satır sayısı Arama dizesinden önce:

B bayrağını aşağıdaki şekilde kullanmak, arama dizesini içeren satırı ve ondan önceki N sayıda satırı görüntüler:

$ egrep -B "search_string" dosya adı

Misal:

$ egrep -B 2 "örnek" örnek dosyası.Txt

N satır sayısı Arama dizesinden önce:

C bayrağını aşağıdaki şekilde kullanmak, arama dizesini içeren satırı ve ondan önceki ve sonraki N sayıda satırı görüntüler:

$ egrep -C "search_string" dosya adı

Misal:

$ egrep -C 2 "örnek" örnek dosyası.Txt

Örnek 9:  Dosyalarda normal ifadeyi eşleştirme

Bir dosyada katı arama dizeleri yerine normal ifadeleri aradıkça egrep komutu daha güçlü hale gelir.

Sözdizimi:

$ egrep "RegularExpressions" dosya adı

Egrep aramanızda Normal İfadeleri nasıl kullanabileceğinizi açıklayalım:

tekrar operatörü kullanın
? Önceki öğe daha önce ? isteğe bağlıdır ve maksimum bir kez eşleştirilir

* *'den önceki öğe sıfır veya daha fazla kez eşleştirilecektir
+ +'dan önceki öğe bir veya daha fazla kez eşleştirilecek
n Önceki öğe tam olarak n kez eşleştirildi.
n, Önceki öğe n veya daha fazla kez eşleştirildi
,m Önceki öğe maksimum m kez eşleştirilir
n,m Önceki öğe en az n kez, ancak m kezden fazla değil

Misal:

Aşağıdaki örnekte, aşağıdaki ifadeyi içeren satırlar eşleştirilir:

"Gnome" ile başlayan ve "programlar" ile biten

Örnek 10: Arama dizesini vurgulama

GREP_OPTIONS ortam değişkenini aşağıdaki gibi ayarladığınızda, sonuçlarda vurgulanan arama dizesi/kalıpıyla çıktınızı alırsınız:

$ sudo dışa aktarma GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

Ardından, bu makalenin örneklerinde açıkladığımız herhangi bir şekilde dizeyi arayabilirsiniz.

Örnek 11: Bir dosyada Tersine Çevirme araması gerçekleştirme

Aramayı tersine çevir ile, egrep komutunun, arama dizesini içeren satırlar dışında dosyadaki her şeyi yazdırdığını kastediyoruz. Aşağıdaki örnek dosyayı egrep üzerinden ters çevirme aramasını açıklamak için kullanacağız. cat komutunu kullanarak dosyanın içeriğini yazdırdık:

Sözdizimi:

$ egrep -v "search_string" dosya adı

Misal:

Bahsettiğimiz örnek dosyadan çıktıda “iki” kelimesini içeren satırı çıkarmak istiyoruz, bu nedenle aşağıdaki komutu kullanacağız:

$ egrep -v "iki" örnek dosya_.Txt

Çıktının, "iki" arama dizesini içeren ikinci satır dışında, örnek dosyadaki her şeyi nasıl içerdiğini görebilirsiniz.

Örnek 12:  Birden çok kritere/arama modeline göre ters arama gerçekleştirme

-v bayrağıyla, aynı zamanda, egrep komutunun, birden fazla arama dizisine/kalıpına dayalı olarak ters çevrilmiş bir arama yapmasını sağlayabilirsiniz.

Bu senaryoyu açıklamak için örnek 11'de bahsettiğimiz aynı örnek dosyayı kullanacağız.

Sözdizimi:

$ egrep -v -e "search_string"/”pattern” -e "search_string"/”desen”
… dosya adı

Misal:

Bahsettiğimiz örnek dosyadan, çıktıda “bir” ve “iki” kelimelerini içeren satırları çıkarmak istiyoruz, bu nedenle aşağıdaki komutu kullanacağız:

$ egrep -v -e “bir” -e “iki” örnek dosya_.Txt

-e bayrağını kullanarak atlanacak iki kelime sağladık, bu nedenle çıktı aşağıdaki gibi görünecektir:

Örnek 13: Arama dizesiyle eşleşen satır sayısını yazdırma

Dosyadan aranan dizeyi veya onu içeren satırları yazdırmak yerine, dizeyle eşleşen satır sayısını saymak ve yazdırmak için egrep komutunu kullanabilirsiniz. Bu sayı, egrep komutuyla -c bayrağı kullanılarak alınabilir.

Sözdizimi:

$ egrep -c "search_string" dosya adı

Misal:

Bu örnekte, örnek dosyamızda "Bu" kelimesini içeren satırların sayısını saymak için -c işaretini kullanacağız:

$ egrep -c "Bu" dosya adı

Arama dizesini içermeyen satırların sayısını saymak ve yazdırmak için buradaki ters arama özelliğini de kullanabilirsiniz: 

$ grep -v -c "search_string" dosya adı

Örnek 14: Dizenin eşleştiği satır numarasının görüntülenmesi

-n bayrağıyla, eşleşen satırı, arama dizesini içeren satır numarasıyla birlikte yazdırmak için egrep komutunu yapabilirsiniz.

Sözdizimi:

$ grep -n "search_string" dosya adı

Misal:

$ grep -n "Bu" örnek dosyası_.Txt

Arama sonuçlarında satır numaralarının nasıl görüntülendiğini görebilirsiniz.

Örnek 15: Dosyada arama dizesinin eşleştiği konumun görüntülenmesi

Arama dizesinin bulunduğu dosyadaki konumu bilmek istiyorsanız, -b bayrağını egrep komutuyla kullanabilirsiniz.

$ grep -o -b "search_string" dosya adı

Misal:

$ grep -o -b "Bu" örnek dosyası_.Txt

Arama sonuçları, arama kelimesinin bulunduğu dosyanın bayt ofsetini yazdırır.Bu, egrep komutunun ayrıntılı bir kullanımıydı. Bu makalede açıklanan bayrakların bir kombinasyonunu kullanarak dosyalarınızda daha anlamlı ve karmaşık aramalar yapabilirsiniz.

OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...