daha önce grep kullandın mı? Çoğu zaman, temel grep numarası işin çoğunu yapabilir. Ancak grep, aramayı gerçekleştirmek ve çıktıyı daha kullanışlı bir sürüme ince ayar yapmak için tonlarca yol sunar. Bu yazıda, grep komutunun kullanımını kontrol edelim.
Grep kullanımı
varlığını doğrulama
Herhangi bir Linux dağıtımı çalıştırıyorsanız, zaten grep yüklemişsinizdir. Terminalde aşağıdaki komutu çalıştırın.
grep --version
Bu komut, şu anda kurulu olan grep'in sürümünü göstermek için kullanılır. Şimdi, bir demo dosyasına ihtiyacımız var. Benim durumumda, sistemimde kurulu tüm paketleri içeren bir metin dosyası oluşturacağım.
Temel bilgiler
Grep'in temel kullanımı aşağıdaki yapıyı takip eder.
grepVeya daha kolay anlamak için bunu kullanın.
grepBu durumda grep, dosyada bir arama yapacak ve kalıbı (arama terimi) içeren tüm satırları yazdıracaktır.
grep python ~/Desktop/PackageList.Txt
Grep “PackageList” dosyasını aradı.Robots.txt” daha önce oluşturdum ve “python” içeren tüm satırları yazdırdım.
Aynı işlem başka bir şekilde de yapılabilir. Aşağıdaki örneği inceleyin.
kedi ~/Masaüstü/Paket Listesi.metin | grep pitonu
Burada “cat” komutunu kullanarak “PackageList” dosyasının içeriğini gönderdim.txt”den grep'e. cat çıktısını kullanarak, grep aramayı gerçekleştirdi ve arama terimini içeren satırları yazdırdı.
Şimdi eğlenceli bir şey geliyor. Kelimenin tam anlamıyla birden fazla grep komutunu aynen böyle istifleyebilirsiniz.
kedi ~/Masaüstü/Paket Listesi.metin | grep - | grep p | grep pitonu
İlk grep kısa çizgi içeren satırlara, ikinci filtre p içeren satırlara ve son grep python içeren satırlara filtre uygular. Mantıklı?
Büyük küçük harf duyarlılığı
Arama yaparken büyük/küçük harf duyarlılığı önemli bir sorudur. Varsayılan olarak, grep büyük/küçük harfe duyarlıdır.
Örneğin, "Python" araması herhangi bir sonuç göstermez.
kedi ~/Masaüstü/Paket Listesi.metin | grep Python
Grep büyük/küçük harf duyarlılığını "duyarsız" yapmak için aşağıdaki seçeneği ekleyin.
kedi ~/Masaüstü/Paket Listesi.metin | grep -i Python
Dosya araması
Diyelim ki çok sayıda metin dosyası içeren bir dizininiz var. Amacınız, bir kalıp (arama terimi) içeren veya içermeyen dosyaları belirlemektir.
Bir yığın günlük dosyası içinde arama yaparken bu yöntemi oldukça yararlı buluyorum. Her bir dosyayı manuel olarak açıp kontrol etmek için zamanım olmadığı için, işi benim için yapacak grep'im var.
Eşleşmeyi içeren dosyaları listelemek için “-l” bayrağını kullanın.
grep -l
Sonuçlardan da anlaşılacağı gibi, "Masaüstü" dizininde bulunan 3 dosyanın hepsinde "python" terimi var.
Eşleşmeyen dosyaları listelemek için “-L” bayrağını kullanın.
grep -L
"Eşleşme yok.txt”, “python” terimini içermeyen tek dosyadır.
Ters arama
Grep'in varsayılan davranışı, yalnızca eşleşen desene sahip satırları yazdırmaktır, sağ? Süreci tersine çevirmenin zamanı geldi. Bu sefer, eşleşen desen OLMADAN yalnızca satırları yazdıracağız.
Sadece "-v" seçeneğini grep'e iletin.
kedi ~/Masaüstü/Paket Listesi.metin | grep -i -v Python
Maç öncesi/sonrası satırları yazdırma
Varsayılan olarak grep, yalnızca arama düzeniyle eşleşen satırı yazdırır. Bu tekniği kullanarak, grep'e maçtan önce/sonra satırları yazdırmasını söyleyebilirsiniz.
Maç öncesi satırları yazdırmak için aşağıdaki yapıyı kullanın.
grep -B
Burada 5, grep'in eşleşen satırdan ÖNCE yazdıracağı sayı satırıdır.
Maçtan sonra satırları yazdırmak için aşağıdakini kullanın.
grep -A
Eşleşen satırdan önce ve sonra yazdırmaya ne dersiniz?? Bu durumda, “-C” bayrağını kullanın.
grep -C
satır numarası
grep çıktıyı gösterdiğinde, satır numarasından bahsetmiyor. İlişkili satır numaraları için “-n” işaretini kullanın.
grep -n
Tek kelime
“-w” bayrağı kullanılırsa, grep, kalıbı bir bütün olarak ele alacaktır.
grep -w
grep aramasını sınırlama
Grep, dosyada aranacak satır sayısını belirlemeye izin verir. Bu yöntem, büyük bir dosyayla (sistem günlüğü gibi) uğraşıyorsanız kullanışlıdır. “-m” bayrağını kullanın.
grep -m
özyinelemeli arama
Ağır kullanım için grep'in sunduğu en yararlı özelliklerden biridir. Grep, bir dizini tekrar tekrar arayabilir ve karşılaştığı tüm dosyalardan tüm eşleşmeleri bulabilir.
grep -RVeya,
grep -r
Genellikle bu özyinelemeli işlevi “-l” bayrağıyla birlikte kullanmayı buluyorum.
Sessiz mod
Grep "sessiz" modda çalıştırılabilir. “Sessiz” modda çalışırken, grep terminale herhangi bir çıktı yazdırmaz. Bunun yerine 0 (en azından bir eşleşme bulundu) veya 1 (eşleşme bulunamadı) döndürür.
grep -qyankı $?
normal ifade
Grep ayrıca normal ifade (normal ifade) aramalarına da izin verir. Bu, bir arama aracı olarak grep'e yepyeni bir karmaşıklık ve kullanılabilirlik düzeyi ekler.
Örneğin, aynı anda hem "çok" hem de "iki" kelimesini aramak için parantezleri kullanabilirsiniz.
kedi ~/Masaüstü/gpl-3.0.metin | grep t[wo]o
Bu sonraki örnek, yalnızca eşleşme satırın en başında gerçekleşirse satırı yazdıracaktır.
grep ^GNU ~/Desktop/gpl-3.0.Txt
Sonu eşleştirmeye gelince, bunu kullanın.
grep you$ ~/Desktop/gpl-3.0.Txt
Perl normal ifadesini kullanmak istiyorsanız, “-P” bayrağını kullanın. Deseni Perl regex olarak ele alacak.
grep -PSon düşünceler
Grep, arama işlevini özelleştirmek için tonlarca yol sunar. Normal ifadenin kullanılabilirliği, grep'in potansiyel kullanımı için yepyeni bir ufkun kilidini açar. İşin güzel yanı, hem genel hem de Perl normal ifadesini kullanabilirsiniz; hangisiyle rahat hissediyorsan.
En ayrıntılı açıklama için her zaman kılavuz sayfasına bakın.
adam grep
Şerefe!