Bu makalede, Grep'in uygulamalarıyla ilgili 10 uygulamalı örnek vererek, normal ifadeyle kullanarak gelişmiş dize araması çalıştırmayı göstereceğiz. Bu makalede tartışılan birçok örneğin pratik sonuçları vardır, yani bunları günlük Linux programlamanızda kullanabilirsiniz. Aşağıdaki örnekler, yaygın olarak aranan kalıplar için bazı normal ifade örneklerini açıklar.
Örnek 1: Bir Metin Dosyasında Tek Bir Kiralayan Kişi Bulun
'Kitap' dosyasında '$' karakteri içeren satırların çıktısını almak için şunu yazın:
$ grep '\$' kitabıÖr 2: Metin Dosyasında Tek Bir Dize Bulun
'$14' dizesini içeren 'kitap' dosyasındaki satırların çıktısını almak için.99', yazın:
$ grep '\$14\.99' kitapÖr 3: Bir Metin Dosyasında Tek Bir Özel Kiralayan Kişi Bulun
'Kitap' dosyasında '\' karakteri içeren satırlar çıkarmak için şunu yazın:
$ grep '\\' kitabıÖr 4: Belirli Metinle Başlayan Satırları Eşleştirme
Bir satırın başlangıcını belirtmek için normal ifadede 'ˆ' kullanın.
'/usr/dict/words' içindeki 'pro' ile başlayan tüm satırların çıktısını almak için şunu yazın:
$ grep 'ˆpro' /usr/dict/words'Kitap' dosyasındaki, 'başlangıçta' metniyle başlayan tüm satırları, büyük/küçük harf fark etmeksizin, çıktı olarak almak için şunu yazın:
$ grep -i 'ˆbaşlangıçta' kitabıNOT: Bu normal ifadeler 'karakterleri ile alıntılanmıştır; bunun nedeni, bazı mermilerin 'ˆ' karakterini özel bir "meta karakter" olarak ele almasıdır
Kelime ve kelime öbeği aramalarına ek olarak, normal ifadeler olarak adlandırılan karmaşık metin kalıplarını aramak için grep kullanabilirsiniz. Normal ifade veya "regexp", belirli bir özel karakterden oluşan bir metin dizesidir Ayarlamak eşleşecek desenler.
Teknik olarak konuşursak, kelime veya ifade kalıpları normal ifadelerdir - sadece çok basit olanlar. Normal bir ifadede, harfler ve sayılar dahil olmak üzere çoğu karakter kendilerini temsil eder. Örneğin, normal ifade kalıbı 1 '1' dizesiyle ve desenle eşleşir oğlan 'boy' dizesiyle eşleşir.
Kendilerini düzenli bir ifadede temsil etmeyen, ancak karmaşık kalıplar oluşturmak için kullanılan özel bir anlamı olan metakarakter adı verilen bir dizi ayrılmış karakter vardır. Bu meta karakterler aşağıdaki gibidir: ., *, [, ], ˆ, $ ve \. Bu tür meta karakterlerin neredeyse tüm yaygın ve özel Linux dağıtımlarında ortak olduğunu belirtmekte fayda var. İşte meta karakterlerin özel anlamlarını kapsayan ve kullanımlarına dair örnekler veren güzel bir makale.
Ör 5: Belirli Metinle Biten Satırları Eşleştirme
Bu metni yalnızca bir satırın sonunda eşleştirmek için alıntılanan metnin son karakteri olarak '$' kullanın. 'Giden' dosyasında ünlem işaretiyle biten satırların çıktısını almak için şunu yazın:
$ grep'!$' gidiyorÖr 6: Belirli Bir Uzunlukta Eşleşen Doğrular
Belirli bir uzunluktaki çizgileri eşleştirmek için bu sayıyı '.' ' ' ve '$' arasındaki karakterler - örneğin, iki karakter (veya sütun) genişliğindeki tüm satırları eşleştirmek için, aranacak normal ifade olarak 'ˆ… $' kullanın.
Tam olarak üç karakter genişliğindeki '/usr/dict/words' içindeki tüm satırların çıktısını almak için şunu yazın:
$ grep 'ˆ… $' /usr/dict/wordsDaha uzun satırlar için farklı bir yapı kullanmak daha yararlıdır: 'ˆ.\sayı\$', burada sayı eşleşecek satır sayısıdır. Bir sayı aralığı belirtmek için ',' kullanın.
Tam olarak on iki karakter genişliğindeki '/usr/dict/words' içindeki tüm satırların çıktısını almak için şunu yazın:
$ grep 'ˆ.\12\$' /usr/dict/wordsYirmi iki veya daha fazla karakter genişliğindeki tüm satırları '/usr/dict/words' olarak almak için şunu yazın:
$ grep 'ˆ.\22,\$' /usr/dict/wordsÖr 7: Bazı Normal İfadelerden Herhangi Birini İçeren Eşleşen Çizgiler
Bir dizi normal ifadeden herhangi birini içeren satırları eşleştirmek için, alternatif operatörler ('\|') arasında aranacak normal ifadelerin her birini aranacak normal ifade olarak belirtin. Verilen normal ifadelerden herhangi birini içeren satırların çıktısı alınacaktır.
"Kitap" veya "kek" kalıplarını içeren "playboy"daki tüm satırların çıktısını almak için şunu yazın:
$ grep 'kitap\|kek' playboyÖr 8: Bazı Normal İfadelerin Tümünü İçeren Eşleşen Çizgiler
Eşleşen satırları çıkarmak için herşey bir dizi normal ifadeden, eşleştirmek istediğiniz ilk normal ifadeyi içeren satırları çıkarmak için grep kullanın ve argüman olarak ikinci normal ifadeyle çıktıyı bir grep'e iletin. Aramak istediğiniz tüm normal ifadeler için grep aramalarına boru eklemeye devam edin.
'Kıyı' ve 'gökyüzü' kalıplarını içeren 'oynatma listesindeki' tüm satırları, büyük/küçük harfe bakılmaksızın, şunu yazın:
$ grep -i 'kıyı' çalma listesi | grep -i gökyüzüÖr 9: Yalnızca Belirli Karakterleri İçeren Satırları Eşleştirme
Yalnızca belirli karakterleri içeren satırları eşleştirmek için 'ˆ[karakterler]*$' normal ifadesini kullanın, burada karakterler eşleşecek olanlardır. '/usr/dict/words' biçiminde yalnızca sesli harfler içeren satırlar çıkarmak için şunu yazın:
$ grep -i 'ˆ[aeiou]*$' /usr/dict/words'-i' seçeneği, büyük/küçük harfe bakılmaksızın karakterlerle eşleşir; bu nedenle, bu örnekte, büyük/küçük harfe bakılmaksızın tüm sesli harfler eşleştirilir.
Ör 10: Boşluklara Bakmaksızın Cümleleri Bulma
Sözcükler arasında veya bir satır veya sayfa sonu boyunca fazladan boşluklarla oluşabilecek bir tümceyi aramanın bir yolu, girişteki tüm satır beslemelerini ve fazladan boşlukları kaldırmak ve ardından bunu grep yapmaktır. Bunu yapmak için, girişi "\r\n:\>\|-" ile '-d' seçeneğinin argümanı olarak tr'ye yönlendirin (girişteki tüm satır sonlarını kaldırarak); bunu '-u' seçeneğiyle fmt filtresine iletin (metni tek tip aralıkla çıktılar); ve aranacak desenle grep yapmak için boru.
'Docs' dosyasındaki 'aynı anda' dizesini satır sonları arasında aramak için şunu yazın:
$ kedi belgeleri | tr -d '\r\n:\>\|-' | fmt -u | grep 'aynı anda'
Özet
Bu makalede, bir metin dosyasında dizeleri aramak ve bulmak için Grep Linux komutunu kullanmanın 10 pratik örneğini inceledik. Bu arada, metin dosyalarında karmaşık aramalar yapmak için normal ifadeleri Grep ile birlikte kullanmayı öğrendik. Artık Linux arama işlevlerinin ne kadar güçlü olduğu konusunda daha iyi bir fikriniz var.
Linux programlama hakkında daha fazla bilgi edinmek isteyenler için ek kaynaklar şunlardır:
Sistem Yöneticileri için Kaynaklar
- Linux Sistem Yönetici Kılavuzu - Linux İşletim Sistemi nedir ve nasıl çalışır
- Linux Sistem Yöneticisi Kılavuzu - Linux Sanal Belleğine ve Disk Tampon Önbelleğine Genel Bakış
- Linux Sistem Yöneticisi Kılavuzu - Linux Sistemlerini İzlemek İçin En İyi Uygulamalar
- Linux Sistem Yöneticisi Kılavuzu - Linux Başlatma ve Kapatma İşlemlerini Gerçekleştirmek İçin En İyi Uygulamalar
- Linux Sistem Yöneticisi Kılavuzu - Yedekleme İşlemlerini Yapmak ve Yönetmek için En İyi Uygulamalar
Linux Çekirdeği Programcıları için Kaynaklar
- Linux İşletim Sistemi Bellek Yönetimi nasıl çalışır?
- Linux Çekirdeği İşletim Sistemi Süreçlerinin Kapsamlı İncelemesi
- Linux Çekirdeği görev yönetiminin arkasındaki mekanizmalar nelerdir?
Linux Dosya Sistemi Sözlüğü
Linux Dosya ve Dizin Sisteminin Nasıl Çalıştığına İlişkin Kapsamlı İnceleme