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

Temel Düzenli ifadeler

'a' harfini içeren içeriği arayın.

Temel Düzenli ifadeler

'^' bir dizenin başlangıcıyla eşleşir. ile BAŞLAYAN içeriği arayalım

Temel Düzenli ifadeler

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 –

Temel Düzenli ifadeler

Yalnızca t ile biten satırları kullanarak seçin $

Temel Düzenli ifadeler

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

Aralık Düzenli ifadeler

'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}

Aralık Düzenli ifadeler

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

Genişletilmiş normal ifadeler

'a' karakterinin 't' karakterinden önce geldiği satırları filtrelemek istediğimizi varsayalım.

Gibi bir komut kullanabiliriz

cat sample|grep "a\+t"

Genişletilmiş normal ifadeler

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:

Destek genişletme

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.