Linux Normal İfade Eğitimi: Grep Regex Örneği

⚡ Akıllı Özet

Linux düzenli ifadeleri, grep, sed ve vi gibi araçlarda veri arayan ve karmaşık kalıpları eşleştiren özel karakter dizileridir; metni hassas bir şekilde filtrelemek için temel, aralıklı, genişletilmiş ve küme parantezi genişletme biçimlerini kullanırlar.

  • 🔎 Onlar ne: Düzenli ifadeler (kısaltılmış haliyle regexp veya regex), arama ve eşleştirme için metin kalıplarını tanımlar.
  • 🧩 Temel set: . ^ $ * ve \ gibi semboller, bir kalıptaki karakterleri sabitlemek, tekrarlamak ve kaçış karakterleri olarak kullanmak için kullanılır.
  • 🔢 Aralık: {n} ve {n,m} gibi küme parantezleri, kendilerinden önceki karakterin kaç kez tekrarlanacağını kontrol eder.
  • Genişletilmiş: `grep -E` komutuyla, `\+` ve `\?` operatörleri bir veya daha fazla karakterin ve sıfır veya bir karakterin eşleşmesini sağlar.
  • 🧵 Destek genişlemesi: Süslü parantezler, bir diziden veya virgülle ayrılmış bir listeden birden fazla dize oluşturur.
  • Kullanım alanları: Grep, sed, tr ve vi gibi araçlar, metni filtrelemek için düzenli ifadelere dayanır.
  • 🤖 Yapay zekâ yardımı: Yapay zekâ asistanları ve GitHub Copilot, düzenli ifade kalıplarını hızlı bir şekilde oluşturabilir, açıklayabilir ve hata ayıklayabilir.

Linux'ta grep ile düzenli ifadeler — temel, aralıklı ve genişletilmiş düzenli ifade örnekleri

Düzenli ifadeler, en güçlü özelliklerinden biridir. Linux Metin araçları, verileri kompakt kalıplarla eşleştirmenize, filtrelemenize ve dönüştürmenize olanak tanır. Bu sayfada temel, aralıklı ve genişletilmiş biçimlerin yanı sıra küme parantezi genişletmesi de örneklerle açıklanmaktadır.

Linux Düzenli İfadeleri nedir?

Linux düzenli ifadeleri, veri arama ve karmaşık kalıpları eşleştirme konusunda yardımcı olan özel karakterlerdir. Düzenli ifadeler 'regexp' veya 'regex' olarak kısaltılır. Birçok Linux programında kullanılırlar, örneğin... grepbash, rename, sed ve daha fazlası.

Normal ifade türleri

Anlaşılması kolay olsun diye, düzenli ifadelerin farklı türlerini tek tek öğrenelim. Bu sayfa temel, aralıklı ve genişletilmiş düzenli ifadeleri kapsamakta ve küme parantezi açılımıyla sona ermektedir.

Temel Düzenli ifadeler

Düzenli ifadelerle çalışan yaygın olarak kullanılan komutlardan bazıları tr ve sed'dir. vive grep. Aşağıdaki tabloda bazı temel düzenli ifadeler listelenmiştir.

sembol Açıklama
. Herhangi bir karakterin yerine geçer.
^ Bir dizenin başlangıcıyla eşleşir.
$ Bir ipin ucuna denk gelir.
* Önceki karakterle sıfır veya daha fazla kez eşleşir.
\ Özel karakterleri temsil eder.
() Normal ifadeleri gruplandırır
? Tam olarak bir karakterle eşleşiyor.

Şimdi bir örnek görelim. Öncelikle, aşağıdaki gibi mevcut bir dosyanın içeriğini görüntülemek için `cat sample` komutunu çalıştırın.

`cat` komutu, terminalde mevcut bir dosyanın içeriğini görüntüleyen örnek bir komuttur.

Ardından, 'a' harfini içeren içerikleri arayın. Aşağıdaki ekran görüntüsü, grep komutunun 'a' harfini içeren her satırı döndürdüğünü göstermektedir.

Örnek dosyada "a" harfini içeren satırları aramak için grep komutu kullanıldı.

Şapka işareti '^' bir dizenin başlangıcını eşleştirir. Aşağıdaki örnek, 'a' harfiyle başlayan içeriği arar.

grep komutu, şapka işareti (caption) kullanarak yalnızca "a" harfiyle başlayan satırları eşleştirir.

Yalnızca 'a' karakteriyle başlayan satırlar filtrelenir. Başında 'a' karakteri bulunmayan satırlar dikkate alınmaz.

Başka bir örneğe bakalım. Aşağıdaki ekran görüntüsü, satır sonuna göre filtreleme yapılmadan önceki örnek dosya içeriğini tekrar göstermektedir.

"T" harfiyle biten satırlar filtrelenmeden önceki örnek dosya içeriği gösterilmiştir.

Aşağıda gösterildiği gibi, '$' işaretini kullanarak yalnızca 't' harfiyle biten satırları seçin.

grep komutuyla dolar işareti kullanarak yalnızca sonu t harfiyle biten satırları seçin.

Aralık Düzenli ifadeler

Bu ifadeler, bir karakterin bir dizede kaç kez geçtiğini belirtir. Bunlar aşağıda listelenmiştir.

ifade Açıklama
{olumsuzluk} Tam olarak 'n' kez görünen önceki karakterle eşleşir
{n,m} 'n' kez görünen ancak m'den fazla olmayan önceki karakterle eşleşir
{N, } Önceki karakterle yalnızca 'n' kez veya daha fazla göründüğünde eşleşir

Örneğin, 'p' karakterini içeren tüm satırları filtreleyin. Aşağıdaki ekran görüntüsü eşleşen satırları göstermektedir.

Örnek dosyada "p" karakterini içeren satırları filtrelemek için grep komutunu kullanma.

Şimdi, 'p' karakterinin bir dizede art arda tam olarak iki kez geçtiğini kontrol edin. Bunun sözdizimi şöyledir:

cat sample | grep -E p\{2}

Aralıklı maçın sonucu aşağıda gösterilmiştir.

grep -E aralık ifadesi, tam olarak iki kez geçen "p" karakteriyle eşleşen ifadeyi bulur.

Not: Bu normal ifadelere -E eklemeniz gerekir.

Genişletilmiş normal ifadeler

Bu düzenli ifadeler birden fazla ifadeyi bir araya getirir. Bunlardan bazıları şunlardır:

ifade Açıklama
\+ Önceki karakterin bir veya daha fazla tekrarıyla eşleşir
\? Önceki karakterin sıfır veya bir tekrarıyla eşleşir

Örneğin, 't' karakterinin tüm geçişlerini arayın. Aşağıdaki ekran görüntüsü sonucu göstermektedir.

Örnek dosyada "t" karakterini içeren tüm satırları aramak için grep komutunu kullanın.

Diyelim ki 'a' karakterinin 't' karakterinden önce geldiği satırları filtrelemek istiyorsunuz. Aşağıdaki gibi bir komut kullanabilirsiniz:

cat sample|grep "a\+t"

Çıktı aşağıdaki ekran görüntüsünde gösterilmektedir.

grep genişletilmiş ifadesi, bir veya daha fazla "a" karakterini ve ardından "t" karakterini eşleştirir.

Destek genişletme

Süslü parantez genişletme sözdizimi, süslü parantezler '{}' içinde ya bir dizi ya da virgülle ayrılmış bir öğe listesidir. Bir dizinin başlangıç ​​ve bitiş öğeleri iki nokta '..' ile ayrılır.

Aşağıda bazı örnekler gösterilmiştir.

Bir diziden ve bir listeden birden fazla dize oluşturmak için küme parantezi genişletmesini kullanan `echo` komutu.

Yukarıdaki örneklerde, `echo` komutu küme parantezi genişletmesi kullanarak dizeler oluşturur ve tek bir kalıptan birden fazla dize üretir.

SSS

grep varsayılan olarak temel düzenli ifadeler kullanır. egrep, genişletilmiş ifadeleri etkinleştirir (grep -E ile aynı), fgrep ise düzenli ifade içermeyen sabit dizeleri eşleştirir (grep -F). Modern GNU grep, egrep ve fgrep'i kullanımdan kaldırılmış olarak işaretler, bu nedenle grep -E ve grep -F'yi tercih edin.

Karakter sınıfları, bir karakter kategorisiyle eşleşir. [az] gibi köşeli parantez ifadeleri bir aralıkla eşleşirken, [[:alpha:]], [[:digit:]] ve [[:space:]] gibi POSIX sınıfları harfler, rakamlar ve boşluklarla eşleşir. Bu sınıflar, kalıpların farklı yerel ayarlarda okunabilir ve taşınabilir olmasını sağlar.

Örneğin, `grep -i “hello” sample` komutunu kullanarak `-i` seçeneğini ekleyin. Bu, `Hello`, `HELLO` ve `hello` ifadelerini aynı şekilde eşleştirir. `-i` seçeneği olmadan, normal ifadeler büyük/küçük harf duyarlıdır, bu nedenle büyük harf ve küçük harf iki farklı karakter olarak ele alınır.

Kabuk joker karakterleri (globbing), dosya adlarını genişletir; burada * herhangi bir karakteri, ? ise tek bir karakteri ifade eder. Düzenli ifadeler, dosyaların içindeki metni eşleştirir; burada * önceki karakterin sıfır veya daha fazla tekrarını ifade eder. Aynı semboller her bağlamda farklı anlamlar taşır.

Örneğin, `grep -o “a\+t” sample` komutunu kullanarak `-o` seçeneğini kullanın. `grep`, tüm satırı yazdırmak yerine, yalnızca kalıpla eşleşen kısmı, satır başına bir eşleşme olacak şekilde yazdırır. Bu, örneğin şu durumlarda kullanışlıdır:tracE-posta adresleri veya telefon numaraları gibi değerler.

Boru sembolüyle dönüşümlü kullanım yapın. Genişletilmiş modda, `grep -E “cat|dog” sample` komutu, "cat" veya "dog" kelimelerini içeren satırları eşleştirir. Temel modda ise `grep “cat\|dog” sample` şeklinde kaçış karakteri kullanmanız gerekir. Dönüşümlü kullanım, tek bir komutun aynı anda birden fazla deseni aramasına olanak tanır.

Yapay zekâ asistanları, sade bir İngilizce açıklamayı çalışan bir düzenli ifadeye dönüştürebilir, gizemli bir kalıbın ne yaptığını açıklayabilir ve eşleşme başarısız olduğunda düzeltmeler önerebilir. Makine öğrenimi araçları ayrıca, elle yazılması zahmetli olacak büyük günlük dosyalarındaki tekrarlayan kalıpları da tespit eder.

Evet. GitHub Yardımcı Pilotu Yazarken yorum satırından veya kısmi bir kalıptan doğrudan grep komutları ve düzenli ifadeler önerir. Karmaşık ifadelerin yazımını hızlandırır, ancak oluşturulan herhangi bir kalıbı kullanmadan önce gerçek örnek verilerle test etmelisiniz.

Bu yazıyı şu şekilde özetleyin: