egrep ve Regular Expressions
Regular Expressions (Regex veya Düzenli İfadeler), metin içinde belirli kalıpları (pattern) aramak, eşleştirmek ve işlemek için kullanılan güçlü bir araçtır. Birçok programlama dili ve komut satırı aracı (örneğin grep
, sed
, awk
, perl
, python
) regex desteği sunar.
grep
(Global Regular Expression Print) komutu, dosyalarda veya standart girdide belirli bir kalıbı aramak için kullanılır. grep
'in farklı sürümleri ve modları vardır:
grep
: Temel regex sözdizimini kullanır. Bazı özel karakterler (+
,?
,|
,()
,{}
) anlamlarını yitirir ve kullanılacaksa\
ile kaçış (escape) yapılması gerekir (örn.\+
,\(...\)
).egrep
veyagrep -E
: Genişletilmiş regex (Extended Regular Expressions - ERE) sözdizimini kullanır.+
,?
,|
,()
,{}
gibi karakterler özel anlamlarını korur ve kaçış yapmaya gerek kalmaz. Bu genellikle daha kullanışlıdır.fgrep
veyagrep -F
: Sabit dizgeler (Fixed strings) arar, regex metakarakterlerini yorumlamaz. Basit metin aramaları için daha hızlı olabilir.
Bu bölümde grep -E
(veya eşdeğeri egrep
) ve genişletilmiş regex sözdizimine odaklanacağız.
Temel Regex Metakarakterleri
Regex'te bazı karakterlerin özel anlamları vardır (metakarakterler):
. (Nokta): Herhangi tek bir karakterle eşleşir (yeni satır karakteri hariç).
Örnek:
gr.p
ifadesi "grep", "grip", "grap" gibi dizgelerle eşleşir.
* (Yıldız): Kendinden önceki karakterin veya grubun sıfır veya daha fazla kez tekrarlanmasıyla eşleşir.
Örnek:
a*b
ifadesi "b", "ab", "aab", "aaab" ile eşleşir..*
ise herhangi bir karakter dizisiyle (boş dizgi dahil) eşleşir.
+ (Artı): Kendinden önceki karakterin veya grubun bir veya daha fazla kez tekrarlanmasıyla eşleşir. (
grep -E
gerektirir).Örnek:
a+b
ifadesi "ab", "aab", "aaab" ile eşleşir, ancak sadece "b" ile eşleşmez.
? (Soru İşareti): Kendinden önceki karakterin veya grubun sıfır veya bir kez tekrarlanmasıyla eşleşir. (
grep -E
gerektirir).Örnek:
colou?r
ifadesi hem "color" hem de "colour" ile eşleşir.
^ (Şapka): Satırın başlangıcıyla eşleşir.
Örnek:
^Merhaba
ifadesi sadece satırın başında "Merhaba" ile başlayanlarla eşleşir.
$ (Dolar): Satırın sonuyla eşleşir.
Örnek:
dünya$
ifadesi sadece satırın sonunda "dünya" ile bitenlerle eşleşir.^Merhaba dünya$
ise sadece "Merhaba dünya" içeren satırla eşleşir.
Karakter Sınıfları ve Köşeli Parantezler [...]
[...]
[abc]
: Köşeli parantez içindeki karakterlerden herhangi biriyle eşleşir (bu örnekte 'a', 'b' veya 'c').Örnek:
gr[ae]y
ifadesi "gray" ve "grey" ile eşleşir.
[a-z]
: Belirtilen aralıktaki karakterlerden herhangi biriyle eşleşir (bu örnekte herhangi bir küçük harf).[0-9]
rakamlarla,[a-zA-Z0-9]
alfanümerik karakterlerle eşleşir.[^abc]
: Köşeli parantez içindeki^
karakteri, parantez içindeki karakterler dışındaki herhangi bir karakterle eşleşir (bu örnekte 'a', 'b' ve 'c' olmayan herhangi bir karakter).
POSIX Karakter Sınıfları: Taşınabilirlik ve farklı yerel ayarlar (locale) için önceden tanımlanmış karakter sınıfları kullanılır (genellikle çift köşeli parantez içinde):
[[:digit:]]
: Rakamlar ([0-9]
)[[:lower:]]
: Küçük harfler ([a-z]
)[[:upper:]]
: Büyük harfler ([A-Z]
)[[:alpha:]]
: Harfler ([a-zA-Z]
)[[:alnum:]]
: Alfanümerik karakterler ([a-zA-Z0-9]
)[[:space:]]
: Boşluk karakterleri (boşluk, tab, yeni satır vb.)[[:punct:]]
: Noktalama işaretleri[[:xdigit:]]
: Hexadecimal rakamlar ([0-9a-fA-F]
)
Gruplama (...)
ve Alternatif |
(...)
ve Alternatif |
(...)
: Parantezler, bir grup karakteri veya alt ifadeyi bir arada tutmak için kullanılır. Quantifier'lar (*
,+
,?
) veya alternatif (|
) bu gruplara uygulanabilir. (grep -E
gerektirir).Örnek:
(ab)+
ifadesi "ab", "abab", "ababab" ile eşleşir.
|
: "Veya" anlamına gelir. İki veya daha fazla alternatiften biriyle eşleşir. (grep -E
gerektirir).Örnek:
kedi|köpek
ifadesi "kedi" veya "köpek" ile eşleşir.^(kedi|köpek)
satır başında "kedi" veya "köpek" ile eşleşir.
Quantifier'lar {...}
{...}
Belirli sayıda tekrarı belirtmek için kullanılır. (grep -E
gerektirir).
{n}
: Önceki öğenin tam olarakn
kez tekrarlanmasıyla eşleşir.Örnek:
[0-9]{3}
tam olarak 3 rakamla eşleşir.
{n,}
: Önceki öğenin en azn
kez tekrarlanmasıyla eşleşir.Örnek:
[0-9]{2,}
en az 2 rakamla eşleşir.
{n,m}
: Önceki öğenin en azn
, en fazlam
kez tekrarlanmasıyla eşleşir.Örnek:
[a-z]{3,5}
3 ila 5 küçük harfle eşleşir.
Kaçış Karakteri \
\
Bir metakarakterin özel anlamını kaldırıp normal bir karakter gibi eşleşmesini sağlamak için kullanılır.
Örnek:
\.
ifadesi.
metakarakteri yerine gerçekten nokta karakteriyle eşleşir.\*
yıldız karakteriyle eşleşir.\\
ters eğik çizgi karakteriyle eşleşir.
grep -E
(egrep) Kullanım Örnekleri
grep -E
(egrep) Kullanım ÖrnekleriDiğer grep
Seçenekleri
grep
Seçenekleri-i
: Büyük/küçük harf ayrımını yok say (ignore case).-v
: Eşleşmeyen satırları göster (invert match).-c
: Eşleşen satır sayısını göster (count).-l
: Eşleşme içeren dosyaların sadece isimlerini listele.-L
: Eşleşme içermeyen dosyaların sadece isimlerini listele.-n
: Eşleşen satırların satır numaralarını göster.-r
veya-R
: Dizinin içindeki alt dizinlerde de arama yap (recursive).-o
: Sadece eşleşen metin kısmını göster, tüm satırı değil.-A num
: Eşleşen satırdan sonrakinum
satırı da göster (After).-B num
: Eşleşen satırdan öncekinum
satırı da göster (Before).-C num
: Eşleşen satırın etrafındakinum
satırı da göster (Context).
Regular expressions, pratik yaparak ve farklı araçlarda deneyerek öğrenilen güçlü bir yetenektir. İnternette birçok regex test aracı ve öğretici kaynak bulunmaktadır.
Last updated