Birden Çok Dize, Desen veya Kelime için Grep Nasıl Yapılır?
giriiş
Grep, Linux/Unix sistemlerinde en güçlü ve yaygın olarak kullanılan komut satırı araçlarından biridir. "Global Normal İfade Yazdırma" anlamına gelir ve belirli desenler veya dizeler için metin dosyalarını veya komut çıktılarını aramak için kullanılır.
Tüm dizin yapısında arama yapabilir, sonuçları filtreleyebilir ve kullanıcıya yalnızca ilgili verileri görüntüleyebilir. Grep, sistem yönetimi, programlama ve veri analizi dahil birçok farklı görev için kullanılabilen çok yönlü bir araçtır.
Temel Grep Komutları
Grep, Unix tabanlı işletim sistemlerinde dosyalardaki belirli kalıpları veya metin dizelerini veya diğer komutların çıktılarını aramak için kullanılan güçlü bir komut satırı aracıdır. Basit bir grep komutunun temel sözdizimi aşağıdaki gibidir –
grep [options] pattern [file]
"Desen", aramak istediğiniz dize veya normal ifadedir ve "dosya" bağımsız değişkeni, aramak istediğiniz dosyanın adını belirtir.
Hiçbir dosya adı belirtilmezse, grep standart girdiden (örneğin başka bir komuttan çıktı) okuyacaktır. Grep ile kullanılan en yaygın seçeneklerden biri "-i"dir, bu da aramayı büyük/küçük harfe duyarsız hale getirir.
Tek bir dize veya desenin nasıl aranacağına ilişkin örnekler
Bir dosyada tek bir dize aramak için aşağıdaki temel sözdizimini kullanın –
bash grep 'string' filename
Örneğin, "meyveler.txt" adlı bir dosyada "elma" kelimesinin geçtiği tüm yerleri bulmak istiyorsanız -
grep 'apple' fruits.txt
Tam bir dize yerine bir modeli eşleştirmek istiyorsanız grep ile normal ifadeleri kullanabilirsiniz.
Örneğin, "a" ile başlayan ve ardından herhangi bir karakter gelen ve ardından "le" ile biten tüm kelimeleri bulmak istiyorsanız - kullanabilirsiniz.
grep 'a.*le' fruits.txt
Bu, "elma", "mümkün" ve "avokado" gibi kelimelerle eşleşecektir.
Birden fazla dize veya kalıp aramadan önce sözdizimi ve seçenekler gibi temel Grep komutlarını anlamak çok önemlidir. Tek dizeleri aramak, istediğiniz dizenin etrafında tırnak işaretleri kullanmayı gerektirirken, kalıpları aramak normal ifadelerin kullanılmasını gerektirir.
Birden çok dize veya desen arama
Grep, belirli bir dosya veya dizinde birden fazla dize veya desen aramak için kullanılabilecek inanılmaz derecede güçlü bir araçtır. Varsayılan olarak Grep, dosyada verilen desenin ilk oluşumunu arayacaktır, ancak aynı anda farklı desenlerin birden fazla oluşumunu bulmak istersek ne olur?
OR (|) operatörünün kullanışlı olduğu yer burasıdır. OR operatörü aynı anda birden fazla diziyi veya modeli aramamızı sağlar.
Bu seçeneği kullanmak için, her bir diziyi veya deseni OR sembolüyle ayırarak listelemeniz yeterlidir. Örneğin, "meyveler.txt" adlı bir dosyada "elma" veya "muz" sözcüklerinin tüm geçişlerini bulmak istediğimizi varsayalım.
Aşağıdaki komutu kullanırdık –
grep 'apple|banana' fruits.txt
Bu komut "elma" veya "muz" içeren tüm satırları döndürecektir. OR operatörünü kullanırken her dize veya desenin kendi tırnak işaretleri içine alınması gerektiğini unutmamak önemlidir.
OR operatörü ayrıca -i (büyük/küçük harfe duyarlı olmayan), -v (tersine çevirme) ve -r (özyinelemeli) gibi diğer Grep seçenekleriyle de birleştirilebilir. Örneğin, "meyveler_klasörü" adlı bir dizindeki herhangi bir dosyada "elma", "muz" veya "kiraz" içeren tüm satırları aramak istediğimizi varsayalım.
Aşağıdaki komutu kullanırdık –
grep -ir 'apple|banana|cherry' fruits_folder/
Belirli bir bağlamdaki kelimeleri arama
Grep, belirli bir bağlamda belirli kelimeleri veya kalıpları aramak için kullanılabilir. Bu, özellikle belirli bir konuyla ilgili bilgi bulmanız gerektiğinde ve daha fazla bağlam elde etmek için çevredeki metnin bir kısmını görmek istediğinizde kullanışlıdır. Grep'teki bağlam seçenekleri, her eşleşmeden önce ve/veya sonra kaç bağlam satırının görüntüleneceğini belirtmenize olanak tanır.
Grep'in bağlam seçenekleriyle (-A, -B, -C) nasıl kullanılacağına ilişkin açıklama
Grep'te üç farklı bağlam seçeneği vardır –
-A – her eşleşmeden sonra belirtilen satır sayısını görüntüler
-B – her eşleşmeden önce belirtilen satır sayısını görüntüler
-C −her eşleşmeden önce ve sonra belirtilen sayıda satırı görüntüler. İhtiyacınız olan bağlam türüne bağlı olarak bu seçeneklerin herhangi bir kombinasyonunu kullanabilirsiniz.
Yalnızca tam eşleşmeler aranıyor
Grep'i kullanarak tam bir kelimeyi veya kelime öbeğini aramaya çalışırken, arama sonuçlarında bir sürü kısmi eşleşme de çıktığında kendinizi hiç hayal kırıklığına uğrattığınız oldu mu? Bu, özellikle çok fazla metin içeren büyük dosyalar arasında arama yaparken yaygın olabilir. Neyse ki Grep'te yalnızca tam eşleşmeleri aramanıza izin veren bir seçenek var; kelime sınırı seçeneği.
Kelime Sınır Seçeneğinin Açıklaması
Kelime sınırı seçeneği (\b), Grep'e yalnızca hem başlangıcı hem de sonu olan kelimeleri eşleştirmesini söyleyen özel bir karakterdir. Arama sonuçlarınızın kısmi eşleşme içermediğinden emin olmanıza yardımcı olur (örneğin, "kedi" için arama yapıyorsanız "tırtıl" veya "dağınık" gibi sonuçlar döndürmez). \b karakteri, daha ayrıntılı bir arama oluşturmak için genellikle diğer arama terimleriyle birlikte kullanılır.
Aramanızı yalnızca "elma" kelimesinin tam olarak örneklerini içerecek şekilde daraltmak için, \b karakterini kelimenin önüne ve arkasına ekleyin.
grep '\bapple\b' file.txt
Bu yalnızca "elma" ifadesinin tam olarak göründüğü satırları döndürecektir.
Kelime Sınırı Seçeneği Kullanılarak Tam Eşleşme Arama Örnekleri
Aşağıda kelime sınırı seçeneğini pratikte nasıl kullanabileceğinize dair bazı örnekler verilmiştir: - Hem "kitap" hem de "kitaplar" kelimelerinin tüm geçişlerini bulmak, ancak bu harfleri içeren diğer kelimeleri bulmamak için −
grep '\bbook\b' file.txt
Hem "kedi" hem de "kediler" sözcüklerinin tüm geçişlerini bulmak için, ancak bu harfleri içeren diğer sözcükleri bulmamak için − grep '\bcat\b' file.txt- "Veri analizi" ifadesinin tam olarak geçtiği tüm sözcükleri bulmak için:
grep '\bdata analysis\b' file.txt
Kelime sınırı seçeneğini kullanmak, Grep aramalarınızın doğruluğunu ve alaka düzeyini önemli ölçüde artırabilir. Farklı arama terimi kombinasyonlarını deneyin ve tam olarak aradığınızı bulana kadar sonuçlarınızı hassaslaştırın.
Normal ifadeler kullanarak arama yapma
Düzenli ifadeler, arama modellerini tanımlamak için kullanılan bir dizi karakterdir. Basit dize veya kalıp eşleştirmesinden daha karmaşık ve spesifik aramalara izin verirler.
Düzenli ifadeler, dosyalarda metin aramanın esnek bir yolunu sağlar ve büyük veri kümelerinden bilgi çıkarmak için kullanılabilir. Grep, düzenli ifadeler için yerleşik desteğe sahiptir ve bu da onu karmaşık aramalar gerçekleştirmek için mükemmel bir araç haline getirir.
Düzenli ifadelerin açıklaması ve Grep aramalarında kullanımları
Düzenli ifadeler, Grep ile birlikte kullanıldığında özel anlamlar taşıyan çeşitli karakterlerden oluşur. Örneğin nokta (.) karakteri herhangi bir tek karakterle eşleşirken yıldız işareti (*) önceki karakterin sıfır veya daha fazla tekrarıyla eşleşir. Dikey çizgi (|) karakteri birden fazla arama modelini ayırmak için kullanılırken köşeli ayraçlar ([]) ekteki karakterlerden herhangi biriyle eşleşen bir karakter seti oluşturmak için kullanılır.
Düzenli ifadelerin güçlü bir özelliği, grupları ve geri referansları kullanma yeteneğidir. Gruplar, ifadenin bir kısmının parantez() içine alınmasıyla oluşturulur.
Çözüm
Grep, kullanıcıların belirli bir dosya içinde birden fazla dize, desen veya kelime aramasına olanak tanıyan güçlü bir araçtır. Kullanıcılar, Grep'in temel komutlarına ve sözdizimine hakim olarak bir dizenin veya kalıbın tek tek örneklerini kolayca arayabilir. Ancak Grep'in gerçek gücü, aynı anda birden fazla diziyi veya deseni arama yeteneğinde yatmaktadır.
Kullanıcılar VEYA operatörünü (|) kullanarak aramalarını birçok farklı olasılığı aynı anda içerecek şekilde genişletebilirler. Ek olarak, bağlam seçeneklerini (-A, -B, -C) kullanarak kullanıcılar daha geniş bir bağlamda belirli kelimeleri arayabilir.