🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-7: Metin İşleme Araçları (`cut`, `awk`, `sed`) ✂️

Konu Özeti

Bash scripting serisinin bu bölümünde metin işleme araçları cut, awk ve sed detaylıca ele alınıyor. cut ile sütun ve karakter bazlı kesme, awk ile sütun bazlı veri işleme ve filtreleme, sed ile metin içi arama-değiştirme ve silme işlemleri örneklerle açıklanıyor. Ayrıca bu üç aracın pipe ile birleştirilerek güçlü veri analizi senaryoları oluşturulması gösteriliyor.

🚀 BAŞTAN SONA BASH SCRIPTING BÖLÜM-7: Metin İşleme Araçları (`cut`, `awk`, `sed`) ✂️

Selamlar! Serimizin 7. bölümüne hoş geldiniz.

Önceki bölümde İndeksli ve İlişkisel Dizileri (Arrays) incelemiştik. Bu bölümde ise sistem yönetiminin ve log analizinin bel kemiği olan, metinleri kesip biçmemizi sağlayan **Metin İşleme Araçlarını (`cut`, `awk`, `sed`)** ve kullanım senaryolarını öğreneceğiz.

---

✂️ 1. Metin Dilimleme: `cut` Komutu 🔪

`cut`, belirli bir ayırıcıya (delimiter) göre sütunları ayırmak veya belirli karakter aralıklarını kırpmak için kullanılır.

### Sık Kullanılan Parametreler:
• `-d` (Delimiter): Ayırıcı karakteri belirtir (Varsayılan: Tab).
• `-f` (Field): Hangi sütunun/saha alanının çekileceğini belirtir.
• `-c` (Character): Belirli karakter pozisyonlarını keser.

#!/bin/bash

# Örnek 1: Karakter bazlı kesme (İsimden ilk 3 harfi alma)
METIN="Mustafa"
ILK_UC=$(echo "$METIN" | cut -c 1-3)
echo "İlk 3 harf: $ILK_UC" # Mus

# Örnek 2: '/etc/passwd' dosyasından kullanıcı adlarını çekme
# /etc/passwd dosyasında sütunlar iki nokta :)) ile ayrılır. Kullanıcı adı 1. sütundur.
echo "--- Sistemdeki İlk 5 Kullanıcı ---"
cut -d: -f1 /etc/passwd | head -n 5

---

📊 2. Sütun Bazlı Güçlü Veri İşleme: `awk` 🧮

`awk`, yalnızca bir komut değil, kendi başına mini bir metin işleme dilidir. Metinlerdeki sütunları (field) otomatik olarak `$1`, `$2`, `$3` şeklinde değişkenlere atar (`$0` tüm satırı temsil eder).

### Sık Kullanılan Özel Değişkenler:
• `FS` (Field Separator): Giriş alan ayırıcısı (Varsayılan: Boşluk/Tab).
• `NR` (Number of Records): Mevcut satır numarası.
• `NF` (Number of Fields): O satırdaki toplam sütun sayısı.

#!/bin/bash

# Örnek 1: Disk kullanım oranlarını çekme
# 'df -h' çıktısından 1. (Dosya Sistemi) ve 5. (Kullanım %) sütunları alma:
echo "--- Disk Kullanım Durumu ---"
df -h / | awk '{print "Sürücü: " $1 " -> Kullanım: " $5}'

# Örnek 2: Ayırıcı değiştirme (-F) ve şartlı filtreleme
# Kullanıcı ID'si (3. sütun) 1000'den büyük veya eşit olan gerçek kullanıcıları bulma:
echo "--- Gerçek Kullanıcılar ---"
awk -F: '$3 >= 1000 {print "Kullanıcı: " $1 " (ID: " $3 ")"}' /etc/passwd

---

✏️ 3. Akış Düzenleyici (Stream Editor): `sed` 🛠️

`sed`, dosyaları açmadan doğrudan komut satırından arama, değiştirme (search & replace), silme ve ekleme işlemleri yapmamızı sağlar.

### Temel Syntax: `sed 's/ESKI/YENI/g' dosya`
• `s`: Substitute (Değiştir)
• `g`: Global (Satırdaki tüm eşleşmeleri değiştir, koyulmazsa sadece ilk eşleşmeyi değiştirir)

#!/bin/bash

METIN="Linux çok zor, Linux öğrenmek imkansız!"

# 1. Metin içi değiştirme
YENI_METIN=$(echo "$METIN" | sed 's/zor/kolay/g' | sed 's/imkansız/eğlenceli/g')
echo "$YENI_METIN"
# Çıktı: Linux çok kolay, Linux öğrenmek eğlenceli!

# 2. Dosya üzerinde doğrudan değişiklik yapma (-i parametresi)
DOSYA="ornek.txt"
echo "Sunucu IP: 127.0.0.1" > "$DOSYA"

# Dosya içindeki 127.0.0.1'i 192.168.1.50 ile değiştirir:
sed -i 's/127.0.0.1/192.168.1.50/g' "$DOSYA"

echo "Güncellenmiş Dosya İçeriği:"
cat "$DOSYA"

# 3. Belirli bir satırı veya deseni silme
# İçinde "TEST" geçen satırları siler:
# sed -i '/TEST/d' "$DOSYA"

---

🚀 4. Üçlünün Birlikte Kullanımı (Pipeline Gücü) 🔗

Linux komut satırının gerçek gücü, pipe (`|`) operatörü ile bu araçları birbirine bağlamakta yatar.

#!/bin/bash

# Sistemde en çok RAM tüketen ilk 3 süreci (process) bulup biçimlendirme:
echo "--- En Çok RAM Tüketen 3 Süreç ---"

ps aux --sort=-%mem | awk 'NR>1 {print $11, $6}' | head -n 3 | while read -r KOMUT RAM
do
# RAM değerini KB'tan MB'a çevirme
RAM_MB=$((RAM / 1024))
echo "Süreç: $KOMUT | Harcanan RAM: ${RAM_MB} MB"
done

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde `cut` ile metin dilimlemeyi, `awk` ile sütun bazlı veri analizini, `sed` ile metin değiştirmeyi ve bu araçları pipe (`|`) ile birleştirmeyi öğrendik.

👉 Bölüm 8'de Bizi Ne Bekliyor?
• Hata Yönetimi ve Hata Ayıklama (Debugging)
• Çıkış Kodları (`exit status`: `$?`)
• Betikleri Hata Ayıklama Modunda Çalıştırma (`set -e`, `set -x`, `set -u`)
• `trap` Komutu İle Sinyal Yakalama
(CTRL+C, temizlik işlemleri)

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! 🐚✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,570Threads
3,306,606Messages
328,411Members
ChuckLatest member
Top Bottom