-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 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! 🐚✨
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
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