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.

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.
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.
Şapka işareti '^' bir dizenin başlangıcını eşleştirir. Aşağıdaki örnek, 'a' harfiyle başlayan içeriği arar.
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.
Aşağıda gösterildiği gibi, '$' işaretini kullanarak yalnızca '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.
Ş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.
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.
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.
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.
Yukarıdaki örneklerde, `echo` komutu küme parantezi genişletmesi kullanarak dizeler oluşturur ve tek bir kalıptan birden fazla dize üretir.










