Birden Fazla Deseni Grep ile Nasıl Aranır


Birden Fazla Kalıp İçin Grep Kullanım Örnekleri

Bazen, bir dosyada belirli bir öğeyi arama şeklinizi özelleştirmek isteyebilirsiniz. Neyse ki, grep, bir kullanıcının arama desenlerinizle eşleşen tüm satırları yazdırarak birden fazla deseni grep yapmasını mümkün kılar.

Birden fazla desen aramak istediğinizde grep ile kullanmanız gereken sözdizimi aşağıdaki gibidir:

grep ‘pattern_1\|pattern_2\|pattern_n’ file_or_path

Belirttiğiniz farklı desenler tek tırnak içinde yer almalıdır ve bunları ayırmak için boru sembolü ekleriz. Bu durumda ters eğik çizgi, düzenli bir ifade ile uğraştığımızı sembolize etmek için eklenir. Bu yazının ilerleyen kısımlarında kullanmak için daha iyi bir yaklaşımı göreceğiz. Şimdilik, birden fazla deseni grep'lemek için nasıl yapılacağını anlamak üzere farklı örnekleri tartışalım.

Örnek 1: Birden Fazla Deseni Grep'leme

Birden fazla deseni grep'lemek istediğinizde, deseni, seçenekleri ve yolu veya dosya adını belirleyin. İlk örneğimiz için, mevcut dizindeki bir dosya üzerinde çalışıyoruz. Arama desenlerimiz 'will' ve 'linux'. Aşağıdaki komutu çalıştırdığınızda, büyük/küçük harf duyarlı olduğunu unutmayın. Ayrıca, tam kelimeyi almaz. Bunun yerine, arama desenine sahip olan herhangi bir kelimeyi döndürür.

grep ‘will\|linux\|pattern_n’ names.txt

Hedef bir dosyanın yoluna sahip olduğunuzda, adını yazmak yerine yolu yazabilirsiniz. Bu seçenek, hedef dosyanızı içeren dizine ilk önce gitmek zorunda kalmaktansa en yaygın olandır. Dosya adını yol ile değiştirin ve aşağıdakilerde gösterildiği gibi komutu çalıştırın:

Örnek 2: Grep Genişletilmiş Düzenli İfadeler

Birden fazla desen için grep kullanımının eski yolu, regular expression ile çalıştığımızı belirtmek için bir ters eğik çizgi eklemenizi gerektirir. Ancak en son yöntem, kullanıcıların kullandıkları desenin genişletilmiş bir regular expression olduğunu belirten -E seçeneğini eklemelerine olanak tanıyarak, ters eğik çizgi ekleme ihtiyaçlarını ortadan kaldırır.

Örneğin, daha önceki komut şu şekilde yeniden yazılabilir:

grep -E ‘pattern_1|pattern_2|pattern_n’ file_or_path

Hala aynı sonuçları alıyoruz.

Örnek 3: Tam Eşleşmeleri Grep'le Bulma

Önceki örneklerden, "grep" komutunun arama deseni olan tüm kalıpları bulduğunu gördük. Ancak, yalnızca tam eşleşmeleri almak istediğiniz bir durumla karşılaşabilirsiniz. Örneğin, "linux-console" kelimesinde eğer arama deseniniz "linux" ise, arama sonucunda yine "linux-console" kelimesini alacaksınız.

Ancak, -w eklemek çıktıyı yalnızca belirli eşleşmeleri içerecek şekilde kısıtlar. Önceki komutumuzu tekrar çalıştıralım ve hangi çıktıyı aldığımızı görelim:

Önceki çıktıda, yalnızca tam eşleşmeleri alarak çıktıyı daralttık.

Örnek 4: Durumlarla Çalışmak

Grep büyük-küçük harf duyarlıdır. Ancak, -i bayrağını eklediğinizde, büyük-küçük harf duyarlılığını dikkate almaz ve birden fazla deseniniz için tüm eşleşmeleri yazdırır.

-i eklemenin durumları dikkate almadan farklı çıktılar oluşturduğunu gösteren aşağıdaki çıktı:

Örnek 5: Farklı Seçeneklerin Birleştirilmesi

Birden fazla desen ararken, belirli bir çıktı almak için farklı seçenekleri birleştirebilirsiniz. Örneğin, büyük/küçük harf duyarlılığını dikkate almadan tam eşleşmeleri bulmak istediğinizi varsayalım. Bunun için aşağıda gösterildiği gibi -iw seçeneğini birleştirebilirsiniz:

Örnek 6: Grep Gösterim Sayısı

Bazen, desendeki farklı çoklu eşleşmeleri saymak isteyebilirsiniz. Örneğin, bir günlüğü dosyasıyla çalışıyorsanız, bu seçenek, belirli bir girdinin hedef dosyada kaç kez göründüğünü takip etmenizi sağlar. Bu sayımı göstermek için, aşağıdaki örnekte gösterildiği gibi -c seçeneğini kullanın:

Çıktı, dosyada mevcut olan çoklu eşleşmelerin sayısını gösterir. Diyelim ki belirli bir desen için daha fazla sayım alıyorsunuz. Komutu tekrar çalıştırdığınızda, farklı bir sayı gösterir.

Sonuç

Bu gönderi, birden fazla deseni işlemek için “grep ” komutunu nasıl kullanabileceğinizi tartıştı. Birden fazla deseni grep kullanarak nasıl çalıştığını gösteren farklı örnekler üzerinde durduk. Bu örneklerle, şimdi birden fazla desenle çalışabileceğinizi umuyoruz.