Giriş
Linux grep komutu, girişi filtrelemek için bir yöntem olarak kullanılır.
GREP Küresel Düzenli İfade Yazıcısı anlamına gelir ve bu yüzden etkili bir şekilde kullanabilmek için düzenli ifadeler hakkında bilgi sahibi olmalısınız.
Bu yazıda size grep komutunu anlamanıza yardımcı olacak bir dizi örnek göstereceğim.
01/09
GREP kullanarak bir dosyada bir dize aramak nasıl
Aşağıdaki çocuk kitabı başlıklarına sahip kitaplar adı verilen bir metin dosyanız olduğunu düşünelim:
- Robin Hood
- Kırmızı Başlıklı Kız
- Peter Pan
- Goldilocks ve üç ayılar
- Pamuk Prenses ve Yedi Cüceler
- Pinnochio
- Şapkadaki Kedi
- Üç küçük Domuz
- Gruffalo
- Charlie'nin Çikolata Fabrikası
Tüm kitapları, başlığında "The" kelimesi ile bulmak için aşağıdaki sözdizimini kullanırsınız:
grep Kitaplar
Aşağıdaki sonuçlar iade edilecektir:
- Goldilocks ve üç ayılar
- Pamuk Prenses ve Yedi Cüceler
- Şapkadaki Kedi
- Üç küçük Domuz
- Gruffalo
- Charlie'nin Çikolata Fabrikası
Her durumda, "The" kelimesi vurgulanacaktır.
Aramanın büyük / küçük harfe duyarlı olduğunu unutmayın, eğer başlıklardan biri "The" yerine "the" ("" ") içeriyorsa, o zaman geri verilmezdi.
Davayı görmezden gelmek için aşağıdaki anahtarı ekleyebilirsiniz:
kitaplar grep - karantina-case
-i anahtarını aşağıdaki gibi kullanabilirsiniz:
grep -i kitaplar
02/09
Wildcards kullanarak bir dosyada bir dize için arama
Grep komutu çok güçlüdür. Sonuçları filtrelemek için çok sayıda desen eşleme tekniği kullanabilirsiniz.
Bu örnekte, joker karakterleri kullanarak bir dosyada bir dizeyi nasıl arayacağınızı göstereceğim.
Aşağıdaki İskoç yer isimleriyle yer adında bir dosya olduğunu düşünün:
aberdeen
aberystwyth
Aberlour
Inverurie
inverness
Newburgh
yeni geyik
yeni galloway
Glasgow
Edinburg
Inver ile tüm yerleri isminde bulmak istiyorsanız, aşağıdaki sözdizimini kullanın:
grep inver * yerler
Yıldız işareti (*) joker karakteri 0 veya daha fazladır. Bu nedenle inver ya da inverness denilen bir yer varsa, her ikisi de iade edilir.
Kullanabileceğiniz bir başka joker ise (.). Bunu tek bir harfle eşleştirmek için kullanabilirsiniz.
grep inver.r yerler
Yukarıdaki komut, inverurie ve inverary denilen yerleri bulabilir, ancak invereeri bulamaz, çünkü iki dönem arasındaki tek bir joker karakter, tek periyotta gösterilir.
Dönem joker karakteri kullanışlıdır, ancak aradığınız metnin bir parçası varsa sorunlara neden olabilir.
Örneğin, bu alan adları listesine bakın
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
Tüm about.com'ları bulmak için aşağıdaki sözdizimini kullanarak arama yapabilirsiniz:
grep * about * alan adları
Listede aşağıdaki ad varsa yukarıdaki komut düşecektir:
- everydaylinuxuser.com/about.html
Bu nedenle, aşağıdaki sözdizimini deneyebilirsiniz:
grep * about.com alan adları
Bu, aşağıdaki ada sahip bir etki alanı olmadıkça işe yarayacaktır:
aboutycom.com
About.com terimini gerçekten aramak için aşağıdaki noktadan kaçmanız gerekir:
grep * hakkında \ .com domainnames
Size gösterilecek son joker, sıfır veya bir karakter anlamına gelen soru işaretidir.
Örneğin:
grepen placenames
Yukarıdaki komut aberdeen, aberystwyth veya hatta berwick'i döndürecektir.
03/09
Grep kullanarak satır başlangıcında ve sonunda dizeleri için arama
Karat (^) ve dolar ($) sembolü, satırların başında ve sonunda kalıpları aramanıza olanak tanır.
Aşağıdaki takım isimleriyle futbol adında bir dosya olduğunu hayal edin:
- Blackpool
- Liverpool
- Manchester City
- Leicester şehri
- Manchester United
- Newcastle United
- FC United Of Manchester
Manchester ile başlayan tüm takımları bulmak istiyorsanız aşağıdaki sözdizimini kullanırsınız:
grep ^ Manchester takımları
Yukarıdaki komut Manchester City ve Manchester United'ı değil, FC United Of Manchester'ı iade edecek.
Alternatif olarak, aşağıdaki sözdizimini kullanarak Birleşik ile biten tüm takımları bulabilirsiniz:
grep United $ ekipleri
Yukarıdaki komut Manchester United ve Newcastle United'ı geri getirecek ancak FC United Of Manchester'ı geri getirmeyecek.
04/09
Grep Kullanarak Eşleşen Sayıların Sayılması
Grep kullanarak bir desenle eşleşen gerçek satırları döndürmek istemezseniz, ancak şu sözdizimini kullanarak kaç tane olduğunu bilmek istersiniz:
grep -c desen inputfile
Desen iki kez eşleştirildiyse, 2 sayısı iade edilir.
05/09
Grep kullanarak eşleşmeyen tüm şartları bulma
Aşağıda listelenen ülkelerle bir yer isimleri listesi olduğunu düşünelim:
- aberdeen iskoçya
- Glasgow İskoçya
- Liverpool İngiltere
- Colwyn Bay
- Londra, Ingiltere
Colwyn Bay'in onunla ilişkili bir ülke olmadığını fark etmiş olabilirsiniz.
Bir ülke ile tüm yerleri aramak için aşağıdaki sözdizimini kullanabilirsiniz:
grep arazi $ yerler
Sonuçlar geri dönüşler colwyn koy hariç tüm yerler olacaktır.
Bu açıkça, sadece karada sona eren yerler için (neredeyse bilimsel olarak) çalışır.
Aşağıdaki sözdizimini kullanarak seçimi tersine çevirebilirsiniz:
grep -v arazi $ yerler
Bu, toprakla bitmeyen tüm yerleri bulur.
06/09
Grep kullanarak dosyaları boş satırları bulmak için nasıl
Aşağıdaki gibi boş bir satır bulduğunda dosyayı okumayı durduran üçüncü taraf bir uygulama tarafından kullanılan bir girdi dosyanız olduğunu düşünelim:
- aberdeen iskoçya
- inverness İskoçya
- Liverpool İngiltere
- Colwyn Bay Galler
Uygulama, karaciğer kütüğünden sonra çizgiye ulaştığında, anlamını durduracak colwyn defne tamamen gözden kaçırılır.
Aşağıdaki sözdizimini içeren boş satırları aramak için grep komutunu kullanabilirsiniz:
grep ^ $ yerler
Ne yazık ki bu özellikle kullanışlı değil çünkü sadece boş satırları döndürüyor.
Tabii ki, dosyanın geçerli olup olmadığını görmek için bir kontrol olarak boş satır sayımı yapabilirsiniz:
grep -c ^ $ yerler
Bununla birlikte, bunları değiştirebilmeniz için boş bir satıra sahip satır numaralarını bilmek daha yararlı olacaktır. Bunu aşağıdaki komutla yapabilirsiniz:
grep -n ^ $ yerler
07/09
Grep kullanarak büyük harf veya küçük harf karakter dizeleri aramak nasıl
Grep kullanarak, bir dosyadaki hangi satırların aşağıdaki sözdizimini kullanarak büyük harf karakterleri olduğunu belirleyebilirsiniz:
grep '[AZ]' dosya adı
Köşeli parantezler [], karakter aralığını belirlemenizi sağlar. Yukarıdaki örnekte, A ve Z arasındaki herhangi bir karakterle eşleşir.
Bu nedenle, küçük harf karakterlerini eşleştirmek için aşağıdaki sözdizimini kullanabilirsiniz:
grep '[az]' dosya adı
Yalnızca harfleri değil, sayısalları veya diğer sembolleri eşleştirmek istiyorsanız, aşağıdaki sözdizimini kullanabilirsiniz:
grep '[a-zA-Z]' dosya adı
Aynı sayıları aşağıdaki gibi yapabilirsiniz:
grep '[0-9]' dosya adı
08/09
Grep kullanarak yinelenen kalıpları için arıyorum
Yinelenen bir model aramak için {} küme parantezlerini {} kullanabilirsiniz.
Aşağıdaki şekilde telefon numaralarını içeren bir dosyanız olduğunu düşünelim:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Sayının ilk bölümünün üç basamak olması gerektiğini biliyorsunuz ve bu modelle uyuşmayan satırları bulmak istiyorsunuz.
Önceki örnekten, [0-9] 'un bir dosyadaki tüm sayıları döndürdüğünü biliyorsunuz.
Bu örnekte üç sayı ile başlayan satırları tire (-) ile takip ediyoruz. Bunu aşağıdaki sözdizimi ile yapabilirsiniz:
grep "^ [0-9] [0-9] [0-9] -" sayılar
Önceki örneklerden bildiğimiz gibi, karat (^), satırın aşağıdaki desenle başlaması gerektiği anlamına gelir.
[0-9] 0 ile 9 arasında herhangi bir sayı arar. Bu üç kez dahil edildiğinden 3 sayıyla eşleşir. Son olarak, bir tirenin üç sayıyı başarması gerektiğini göstermek için bir tire işareti vardır.
Kıvrımlı parantezleri kullanarak, aramayı aşağıdaki gibi küçültebilirsiniz:
grep "^ [0-9] \ {3 \} -" sayılar
Eğik çizgi {bindirmeyi, böylece normal ifadenin bir parçası olarak çalışır, ancak aslında bunun söylediği şey [0-9] {3}, yani 0 ile 9 arasında üç kez anlamına gelir.
Kıvrımlı parantezler aşağıdaki gibi de kullanılabilir:
{5,10}
{5},
{5,10}, aranan karakterin en az 5 kez, ancak en fazla 10 kez tekrarlanması gerektiği anlamına gelirken, {5,} karakterin en az 5 kez tekrarlanması gerektiği anlamına gelir, ancak bundan daha fazla olabilir.
09/09
Grep Kullanarak Diğer Komutlardan Çıktının Kullanılması
Şimdiye kadar, tek tek dosyalar içinde desen eşleştirmesine baktık ama grep, çıktıyı desen eşleştirme girdisi olarak diğer komutlardan da kullanabilir.
Bunun harika bir örneği aktif süreçleri listeleyen ps komutunu kullanmaktır.
Örneğin aşağıdaki komutu çalıştırın:
ps -ef
Sisteminizdeki tüm çalışan işlemler görüntülenecektir.
Belirli bir çalıştırma işlemini aşağıdaki gibi aramak için grep'i kullanabilirsiniz:
ps -ef | grep firefox