
Linux'ta Metin Dosyası İşlemleri: grep, sed, awk ve cut Komutları
Linux'ta metin işleme araçlarını öğrenin. grep ile arama, sed ile metin değiştirme, awk ile veri işleme ve cut ile alan kesme komutlarının pratik kullanım rehberi.
Linux'ta Metin Dosyası İşlemleri: grep, sed, awk ve cut Komutları
Linux komut satırının en güçlü araçlarından biri metin işleme komutlarıdır. grep, sed, awk ve cut; log analizi, konfigürasyon düzenleme ve veri işlemede vazgeçilmez araçlardır. Bu rehberde bu komutları pratik örneklerle açıklıyoruz.
grep - Metin Arama Komutu
grep (Global Regular Expression Print), dosya veya akışlarda kalıp arar.
Temel Kullanım
grep "hata" /var/log/error.log
grep "ERROR" apache2/access.log
grep "404" access.log
Yararlı grep Seçenekleri
grep -i "error" dosya.txt # Büyük/küçük harf duyarsız
grep -n "pattern" dosya.txt # Satır numarasıyla
grep -c "error" dosya.txt # Eşleşme sayısı
grep -v "INFO" uygulama.log # Eşleşmeyenleri göster
grep -r "fonksiyon" /var/www/ # Özyinelemeli arama
grep -l "pattern" *.php # Sadece dosya adlarını göster
grep -A 3 "hata" log.txt # Eşleşmeden sonra 3 satır göster
grep -B 3 "hata" log.txt # Eşleşmeden önce 3 satır göster
grep -C 3 "hata" log.txt # Her iki yönde 3 satır bağlam
Regex ile grep
# Satır başı (^)
grep "^ERROR" log.txt # ERROR ile başlayan satırlar
# Satır sonu ($)
grep "500$" access.log # 500 ile biten satırlar
# Herhangi bir karakter (.)
grep "hata." log.txt # hata + herhangi bir karakter
# Özel karakterleri kaçış
grep "sayfa\.html" log.txt # sayfa.html (. kaçış yapılır)
Pratik grep Örnekleri
# Son 1 saatteki 404 hatalarını say
grep "404" access.log | wc -l
# Belirli IP'nin isteklerini göster
grep "192.168.1.100" access.log
# PHP hatalarını filtrele
grep "PHP Fatal error" php-error.log | tail -20
# WordPress'te veritabanı şifresini bul (eğer varsa)
grep "DB_PASSWORD" /home/kullanici/public_html/wp-config.php
sed - Akış Editörü
sed (Stream EDitor), metin akışlarında değiştirme, silme ve dönüşüm işlemleri yapar.
Temel sed Sözdizimi
sed 'komut' dosya.txt
sed -i 'komut' dosya.txt # Doğrudan dosyada değiştir
Metin Değiştirme (Substitution)
# İlk eşleşmeyi değiştir
sed 's/eski/yeni/' dosya.txt
# Tüm eşleşmeleri değiştir
sed 's/eski/yeni/g' dosya.txt
# Büyük/küçük harf duyarsız
sed 's/eski/yeni/gi' dosya.txt
# Doğrudan dosyada değiştir
sed -i 's/eski/yeni/g' dosya.txt
Satır Silme
# Belirli kalıbı içeren satırları sil
sed '/kalip/d' dosya.txt
# Boş satırları sil
sed '/^$/d' dosya.txt
# İlk satırı sil
sed '1d' dosya.txt
# 5. satırdan 10. satıra kadar sil
sed '5,10d' dosya.txt
Pratik sed Örnekleri
# WordPress veritabanı adını değiştir
sed -i "s/define('DB_NAME', 'eski_db')/define('DB_NAME', 'yeni_db')/" wp-config.php
# Tüm satır sonlarını Unix formatına çevir (Windows'tan gelen dosyalar)
sed -i 's/
//' dosya.txt
# Apache config'de port değiştir
sed -i 's/Listen 8080/Listen 80/' /etc/apache2/ports.conf
awk - Veri İşleme Aracı
awk, metin dosyalarını alan bazında işleyen güçlü bir araçtır. Özellikle CSV, log ve tablo formatındaki verilerle çalışmak için idealdir.
Temel awk Sözdizimi
awk '{eylem}' dosya.txt
awk -F ':' '{print $1}' /etc/passwd # Ayırıcı ile
awk'ta $1, $2, $3... alan numaralarını temsil eder. $0 tüm satırı temsil eder.
Alanları Yazdırma
# Apache log formatı: IP - - [tarih] "istek" durum boyut
# İlk alanı (IP) yazdır
awk '{print $1}' access.log
# 7. alanı (HTTP durum kodu) yazdır
awk '{print $9}' access.log
# İlk ve yedinci alanları yazdır
awk '{print $1, $9}' access.log
Koşullu İşleme
# 500 kodlu istekleri filtrele
awk '$9 == "500" {print}' access.log
# 10KB'den büyük dosyaları listele
awk '$5 > 10240 {print $5, $9}' access.log
# Belirli IP'nin isteklerini say
awk '/192.168.1.100/ {count++} END {print count}' access.log
awk ile İstatistik
# Toplam veri transferini hesapla
awk '{sum += $10} END {print sum/1024/1024 " MB"}' access.log
# IP başına istek sayısını sıralı göster
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
cut - Alan Kesme Komutu
cut, her satırdan belirli alanları veya karakterleri keser.
# Sınırlayıcıya göre alan kesme
cut -d ':' -f 1 /etc/passwd # Kullanıcı adlarını al
cut -d ',' -f 1,3 veri.csv # 1. ve 3. alanları al
# Karakter pozisyonuna göre kesme
cut -c 1-10 dosya.txt # İlk 10 karakteri al
cut -c 5- dosya.txt # 5. karakterden sona kadar
# Alan aralığı
cut -d ':' -f 1-3 /etc/passwd # 1, 2, 3. alanlar
cut -d ':' -f 3- /etc/passwd # 3. alandan sona kadar
Komutları Birleştirme (Pipe)
Pipe ile komutlar zinciri oluşturabilirsiniz:
# En fazla istek atan IP adresleri
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
# 404 hatalarının URL'lerini listele
grep " 404 " access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
# Bugünkü PHP hatalarını filtrele
grep "$(date +'%d/%b/%Y')" php-error.log | grep "Fatal error"
# Disk kullanımı yüksek dosyaları bul
du -sh /home/*/public_html/ 2>/dev/null | sort -rh | head -10
Büyükweb VDS'de Metin İşleme
Büyükweb VDS sunucular ile tam SSH erişimi alarak log analizi, konfigürasyon yönetimi ve toplu metin işlemlerini kolayca yapabilirsiniz.
Sonuç
grep, sed, awk ve cut; Linux sunucu yönetiminin temel araç setidir. Log analizi için grep ve awk, konfigürasyon değişiklikleri için sed, veri işleme için awk kullanımı öğrenilmesi gereken temel becerilerdir. Bu araçları pipe ile birleştirmek, karmaşık veri işleme görevlerini tek bir komuta indirgemenizi sağlar.
Pratik Linux Komutlari
Dosya Yonetimi
find ile kriterlere gore arama yapin. du -sh ile dizin boyutu, ncdu ile interaktif analiz. locate ile hizli dosya bulma. rsync ile dosya senkronizasyonu.
Surec Yonetimi
ps aux ile surecleri goruntuleyin. kill -9 ile sonlandirin. nohup ile arka planda calistirin. screen/tmux ile coklu terminal. systemctl ile servis yonetimi.
Metin Isleme
grep -r ile arama, sed ile toplu degisiklik, awk ile sutun cikarma. jq ile JSON isleme. tail -f ile canli log takibi. wc ile satir/kelime sayma.
Ag Komutlari
ss -tulpn ile portlar, curl ile HTTP istekleri, mtr ile traceroute, tcpdump ile trafik yakalama. dig ile DNS sorgulari. wget ile dosya indirme.
Zamanlama
crontab -e ile zamanlanmis gorevler. Yedekleme, temizlik otomasyonu. systemd timer ile gelismis zamanlama.
Disk Yonetimi
df -h ile kullanim, lsblk ile diskler. LVM ile esnek yonetim. RAID yapilandirmasi.
Sik Sorulan Sorular
Nereden baslamaliyim?
Temel komutlar (ls, cd, cp, mv, rm), editior (nano/vim), izinler (chmod) ve paket yonetimi (apt/dnf) ile baslayin.
Bash script nasil yazilir?
#!/bin/bash ile baslayin. Degiskenler, kosullar, donguler ogrenin. chmod +x ile calistirin.
Sonuc
Linux komut satiri sunucu yonetiminin vazgecilmez aracidir. Pratik yaparak becerilerinizi gelistirin.
En Sik Kullanilan Linux Komutlari
| Komut | Aciklama | Ornek |
|---|---|---|
| ls -la | Detayli dosya listesi | ls -la /var/www |
| grep -r | Icerik arama | grep -r "error" /var/log |
| find | Dosya bulma | find / -name "*.conf" |
| chmod | Izin degistirme | chmod 755 dosya.sh |
| chown | Sahiplik degistirme | chown www-data /var/www |
| systemctl | Servis yonetimi | systemctl restart nginx |
| journalctl | Log goruntuleme | journalctl -u nginx -f |
| df -h | Disk kullanimi | df -h / |
| free -m | Bellek kullanimi | free -m |
| ss -tulpn | Ag baglantilari | ss -tulpn |
Shell Scripting Temelleri
Bash script ile tekrarli gorevleri otomatiklestirin:
Yedekleme Scripti
Otomatik yedekleme ile veritabani ve dosyalarinizi duzenli yedekleyin. mysqldump ile veritabani, tar ile dosya arsivi olusturun.
Disk Izleme
Disk kullanimini izleyen ve esik degerini astiginda bildirim gonderen script yazin.
Log Analiz
Apache/Nginx loglarini analiz ederek en cok ziyaret edilen sayfalar ve supheli IP adresleri raporlayan script olusturun.
Etiketler:

