13 – Regex ve Metin Manipülasyonu: Bash Script’te Güçlü Metin İşleme Araçları

1. Düzenli İfadeler (Regex) Nedir?
Düzenli ifadeler, metinleri aramak ve üzerinde işlem yapmak için kullanılan güçlü bir araçtır. Özellikle büyük dosyalarla çalışırken belirli bir desenle eşleşen metinleri bulmak, değiştirmek veya analiz etmek için kullanılırlar. Bash script yazarken grep
, sed
, ve awk
komutları düzenli ifadeler ile metin işleme konusunda çok güçlü seçenekler sunar.
Düzenli ifadeler, belirli kalıplarla eşleşen metinleri bulmak ve değiştirmek için sembol ve karakterlerin birleşiminden oluşan bir yazım kuralıdır. Örneğin, belirli bir kelimeyi veya karakter grubunu metin dosyasında bulmak ve bu kısımla ilgili işlem yapmak için düzenli ifadeler kullanılır.
2. grep
ile Metin Arama
grep
komutu, belirli bir düzenli ifadeye veya kalıba sahip satırları bulmak için kullanılır. grep
, dosyalar içerisinde hızlı ve etkili bir şekilde arama yapmanızı sağlar.
Örnek Kullanımlar
- Dosyada belirli bir kelimeyi aramak:
grep "aranan_kelime" dosya.txt
Büyük/küçük harfe duyarsız arama (-i
parametresi):
grep -i "aranan_kelime" dosya.txt
Dosyadaki belirli bir desenle eşleşen tüm satırları listeleme:
grep "^a.*e$" dosya.txt
- Bu komut, “a” harfi ile başlayan ve “e” harfi ile biten tüm satırları bulacaktır.
3. sed
ile Metin Düzenleme
sed
(stream editor), dosyalar veya giriş verileri üzerinde doğrudan düzenleme yapmak için kullanılır. sed
, özellikle dosyadaki belirli bir metni değiştirmek veya belirli desenlere uygun satırları çıkarmak gibi işlemler için kullanılır.
Belirli bir kelimeyi başka bir kelimeyle değiştirme:
sed 's/eskikelime/yeniKelime/' dosya.txt
Bu komut, dosya.txt
dosyasındaki ilk bulduğu “eskikelime” ifadesini “yeniKelime” ile değiştirir.
Dosyadaki her eşleşmeyi değiştirme (g
bayrağı):
sed 's/eskikelime/yeniKelime/g' dosya.txt
g
bayrağı kullanılarak tüm satırlarda ve tüm eşleşmelerde değiştirme yapılır.
sed '/silinecekSatirDeseni/d' dosya.txt
Bu komut, “silinecekSatirDeseni” ile eşleşen tüm satırları siler.
4. awk
ile Metin Verilerini İşleme
awk
, verileri satır ve sütun formatında işlemeye olanak tanır ve genellikle yapılandırılmış metin verileriyle çalışmak için kullanılır. Bu komut, belirli bir formata uygun verileri analiz edebilir ve üzerinde işlem yapabilir.
Örnek Kullanımlar
- Dosyadaki her satırın ikinci sütununu ekrana yazdırma:
awk '{print $2}' dosya.txt
Bu komut, her satırda bulunan ikinci sütunu ($2
) ekrana yazdırır.
Belirli bir koşulu sağlayan satırları seçme:
awk '$3 > 100 {print $1, $3}' dosya.txt
Bu komut, üçüncü sütunu 100’den büyük olan satırları bulur ve bu satırların birinci ve üçüncü sütunlarını ekrana yazdırır.
5. Düzenli İfadeler ile Sık Kullanılan Semboller
Düzenli ifadeler içerisinde kullanılan bazı özel karakterler:
.
: Herhangi bir karakter ile eşleşir.*
: Önceki karakterin sıfır veya daha fazla tekrarı ile eşleşir.^
: Satır başını belirtir.$
: Satır sonunu belirtir.[abc]
: Köşeli parantez içerisindeki karakterlerden herhangi biri ile eşleşir.[a-z]
: Belirtilen aralıkta bir karakterle eşleşir.
6. grep
, sed
, ve awk
Birlikte Kullanımı
Bash script yazarken bu üç komutu birlikte kullanmak oldukça yaygındır. Bu şekilde daha karmaşık metin işleme görevleri yerine getirilebilir.
Örnek: Log Dosyasını Filtreleme ve Analiz
Bir sistem log dosyasını analiz ettiğinizi düşünelim:
grep "ERROR" /var/log/syslog | awk '{print $1, $2, $5}' | sed 's/ERROR/KRİTİK HATA/'
Bu komut zincirinde şu işlemler yapılmaktadır:
grep "ERROR"
: Log dosyasındaki “ERROR” içeren satırları bulur.awk '{print $1, $2, $5}'
: Bu satırların birinci, ikinci ve beşinci sütunlarını yazdırır.sed 's/ERROR/KRİTİK HATA/'
: “ERROR” ifadesini “KRİTİK HATA” olarak değiştirir.
7. Bash Script Örneği: Metin Manipülasyonu
Aşağıda, bir metin dosyasındaki belirli bir deseni bulup değiştiren ve ardından bu dosyadaki belirli satırları ekrana yazdıran bir Bash script örneği bulunmaktadır:
#!/bin/bash
# Değişken tanımlama
dosya="ornek.txt"
# "hata" kelimesini "uyarı" ile değiştir
sed -i 's/hata/uyarı/g' $dosya
# "uyarı" kelimesi içeren satırları ekrana yazdır
grep "uyarı" $dosya
Bu script şu işlemleri yapmaktadır:
sed
kullanarakornek.txt
dosyasındaki “hata” kelimesini “uyarı” ile değiştirir (-i
parametresi dosyayı yerinde düzenler).- Ardından
grep
komutu ile dosyada “uyarı” içeren tüm satırları ekrana yazdırır.
Bash script yazarken metin manipülasyonu, sistem yönetimi ve veri işleme için kritik öneme sahiptir. grep
, sed
, ve awk
gibi araçlar, metin dosyalarında arama yapmak, düzenlemek ve analiz etmek için mükemmel çözümler sunar. Düzenli ifadelerin gücü sayesinde, karmaşık metin manipülasyonu görevleri kısa ve etkili Bash script’leri ile gerçekleştirilebilir.
Bu beceriler, özellikle büyük veri kümeleri üzerinde analiz yaparken, sistem yönetimi sırasında belirli logları takip ederken ya da dosya işleme işlemlerini otomatikleştirirken son derece faydalıdır. Bu komutları öğrenerek ve birleştirerek, güçlü ve esnek Bash script’leri oluşturabilirsiniz.