grep komutu ile Linux'ta veri arama işlemleri komut satırı üzerinden kolaylıkla yapılabilir.

Önceki yazımızda sort komutunu kullanarak verileri istediğimiz ölçütlere göre nasıl sıralayacağımızı anlatmıştık. Ayrıca bir komutun çıktılarını başka bir komuta nasıl yönlendireceğimizden de bahsetmiştik. Genellikle büyük miktarda veri içeren dosyalar ya da bir komut sonrası ortaya çıkan yığın veriler arasından istediğimiz bir veriyi bulmamız gerekebilir. Verilerin tamamını manuel bir şekilde kaydırıp tüm satırlara göz atmak yerine grep komutu ile arama yapabiliriz. Bu yazımızda Linux komut satırını kullanarak veri arama konusuna değineceğiz.

grep komutunun genel kullanımı şu şekildedir;

Elbette basit aramalar için grep komutunu kullanırken parametre kullanmak zorunda değiliz. Örneğin, İstiklal Marşımızın yer aldığı “istiklal.txt” adlı dosyanın içerisinde “millet” kelimesini arayalım;

grep komutunun basit kullanımı

Dört satırda aradığımız kelimeyi bulduk. Son iki satır aynı, bir hata mı var diye kontrol etmek için satır numaralarını göstermesini “-nparametresi ile isteyelim;

grep -n parametresi ile kullanılınca satır numaralarını gösterir

Hepimizin bildiği gibi, bir hata yok.

grep komutu oldukça popüler bir komut. Bu popülaritesi nedeniyle ömrü boyunca pek çok özellik eklenerek geliştirildi. Komutun man sayfasına bakarsanız gerçekten çok yönü olduğunu görebilirsiniz.

Aramayı ters çevirerek yani aranan ifadenin geçmediği satırları listeleyerek de sorgu yapabiliriz. Aradığımız kelime geçmeyen satırları görmek istiyorsak “-v” parametresini kullanabiliriz. Bazı özelleşmiş log dosyaları ya da her satırında belli bir ifade geçmesi gereken dosyalarda bu şekilde arama yapmak, hataları ya da aramak istediğimiz şeyleri kolaylıkla bulmaya yardımcı olabilir.

Örneğin, giriş-çıkış kayıtlarını tutan bir log dosyasında kartlı giriş bilgisi “CardPass” ifadesiyle saklanmaktadır. Kartsız geçiş durumlarını aratacağız, ama önce tüm listeyi görelim ve ardından arama yapalım;

arama ters çevrilerek, aranan ifadenin geçmediği satırlar da gösterilebilir

İki gün kartlı değil de farklı giriş yöntemiyle girildiğini görebiliyoruz. Dolayısyla grep komutu Log dosyasının çok fazla veri içerdiği durumlar için oldukça yararlı bir parametre.

Aradığımız verinin bir dosyada kaç satırda geçtiğini sorgulamak için ise “-c” parametresini kullanıyoruz. Bu da oldukça kullanışlı bir parametre;

-c parametresi dosya sayısını verir

Eğer birbirinin devamı olmayan birden fazla ifade aramak istersek “-e” parametresi ile ifadeleri belirtmemiz gerekir;

grep komutu ile birden fazla ifadeyi arama

Yukarıdaki örnekte “millet” veya “hür” kelimelerinin geçtiği satırları görüntüledik.

Bir ifadenin birden fazla dosyadaki sorgusu ise şu şekildedir;

birden fazla dosyada arama yapma

Bu şekilde yapılan sorgu dosya isimlerini belirterek çıktı verecektir.

Eğer içerisinde aradığımız veriyi içeren dosyaların adlarını listelemesini istersek ;

aranan ifadenin hangi dosyalarda olduğunu da sorgulayabiliriz

“-l” parametresi ile yaptığımız sorgu bize sadece dosya adlarını veriyor, buna dikkat etmek gerekir.

grep komutunu başka komutlarla birleştirme

Önceki yazımızda pipe simgesini “|” kullanarak bir komutun çıktısını başka bir komuta aktarabileceğimizi anlatmıştık.

Şöyle bir örnek yapabiliriz; öncelikle ls komutuyla bir klasörde bulunan tüm dosyaları sorgulayalım:

klasördeki tüm dosyaları detaylı sorgulama

ls komutunu “-l” parametresi ile birlikte kullanarak dosyaların tüm ayrıntılarını görüntüledik. Buradaki dosyaların bazılarının “root” kullanıcısına bazılarının ise “taylan” kullanıcısına ait olduğunu görüyoruz.

ls komut çıktısını grep komutuna aktararak sadece “root” kullanıcısına ait dosyaları listeleyelim;

ls komut çıktısını grep komutuna aktarma

Elbette örneğimizde pek fazla dosya yok ama bu işlem binlerce dosya ve onlarca kullanıcının olduğu bir sistemde dosya sahipliği sorgulamak için oldukça kullanışlı bir işlem.

grep komutunun oldukça popüler bir komut olduğunu söylemiştik. Bu popülerliğinin bir nedeni de diğer komutların çıktılarının grep komutuna aktarılarak oldukça verimli sonuçlar alınması olduğunu söyleyebiliriz. Biraz yaratıcılık ve imkanların zorlanması, grep komutuyla basit ama çok etkili işler çıkarmanıza neden olabilir.

Her zaman belirttiğimiz gibi grep komutu ile ilgili detayları da “help” parametresi ve man sayfasında bulabilirsiniz.

ya da

Linux yazılarımıza dosya sıkıştırma ve arşivleme konusu ile devam edeceğiz.

Eski yazılarımıza sayfanın sağındaki (mobil cihazlarda en alttaki) alandan erişebilirsiniz.

BİR CEVAP BIRAK