Linux Normal İfade Eğitimi: Grep Regex Örneği
Linux Düzenli İfadeleri nedir?
Linux Normal İfadeleri veri arama ve karmaşık desenleri eşleştirmeye yardımcı olan özel karakterlerdir. Düzenli ifadeler 'regexp' veya 'regex' olarak kısaltılır. grep, bash, rename, sed vb. gibi birçok Linux programında kullanılırlar.
Normal ifade türleri
Anlama kolaylığı için farklı Regex türlerini tek tek öğrenelim.
Tıkla okuyun videoya erişilemiyorsa
Temel Düzenli ifadeler
Düzenli ifadelerle yaygın olarak kullanılan komutlardan bazıları tr, sed, vi ve grep. Aşağıda listelenen temel Regex'lerden bazılarıdır.
sembol | Descriptiyonları |
---|---|
. | herhangi bir karakterin yerini alır |
^ | dizenin başlangıcıyla eşleşir |
$ | dizenin sonuyla eşleşir |
* | önceki karakterin sıfır veya daha fazla katıyla eşleşir |
\ | Özel karakterleri temsil edin |
() | Normal ifadeleri gruplandırır |
? | Tam olarak bir karakterle eşleşir |
Bir örnek görelim.
Mevcut bir dosyanın içeriğini görmek için kedi örneğini yürütün
'a' harfini içeren içeriği arayın.
'^' bir dizenin başlangıcıyla eşleşir. ile BAŞLAYAN içeriği arayalım
Yalnızca karakterle başlayan satırlar filtrelenir. Başında 'a' karakterini içermeyen satırlar dikkate alınmaz.
Başka bir örneğe bakalım –
Yalnızca t ile biten satırları kullanarak seçin $
Aralık Düzenli ifadeler
Bu ifadeler bize bir karakterin bir dizedeki oluşum sayısını anlatır. Bunlar
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 |
Örnek:
'p' karakterini içeren tüm satırları filtreleyin
'p' karakterinin bir dizede tam olarak 2 kez arka arkaya göründüğünü kontrol etmek istiyoruz. Bunun için sözdizimi şöyle olacaktır:
cat sample | grep -E p\{2}
Not: Bu normal ifadelere -E eklemeniz gerekir.
Genişletilmiş normal ifadeler
Bu normal ifadeler birden fazla ifadenin birleşimini içerir. Onlardan bazıları:
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 |
Örnek:
Tüm 't' karakterlerini arıyorum
'a' karakterinin 't' karakterinden önce geldiği satırları filtrelemek istediğimizi varsayalım.
Gibi bir komut kullanabiliriz
cat sample|grep "a\+t"
Destek genişletme
Parantez genişletmenin sözdizimi, küme parantezleri "{}" içindeki öğelerin bir dizisi veya virgülle ayrılmış bir listesidir. Bir dizideki başlangıç ve bitiş öğeleri iki nokta “..” ile ayrılır.
Bazı örnekler:
Yukarıdaki örneklerde echo komutu küme ayracı genişletmesini kullanarak dizeler oluşturur.
Özet:
- Düzenli ifadeler, dizelerdeki kalıpları kontrol etmek için kullanılan bir dizi karakterdir
- Bunlara 'regexp' ve 'regex' de denir
- Komut dosyaları yazmak için düzenli ifadeleri öğrenmek önemlidir
- Bazı temel düzenli ifadeler şunlardır:
sembol | Descriptiyonları |
---|---|
. | herhangi bir karakterin yerini alır |
^ | dizenin başlangıcıyla eşleşir |
$ | dizenin sonuyla eşleşir |
- Bazı genişletilmiş düzenli ifadeler ş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 |
- Bazı aralık düzenli ifadeleri şunlardır:
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 |
- Ayraç genişletmesi dizeleri oluşturmak için kullanılır. Birinden birden fazla dize oluşturmaya yardımcı olur.