Buyukweb
Linux'ta Metin Dosyası İşlemleri: grep, sed, awk ve cut Komutları

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.

Büyükweb Teknik Ekibi29 Eylül 20247 dakika okuma

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:

#linux#komut satırı#terminal#sunucu yönetimi

Bu yazıyı paylaş