← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 7 → Seviye 8

Teknik Not

Bağlam

Bir dosyanın adresini bulmak için find kullanmıştık. Peki ya dosyanın yerini biliyorsak ama içeriği çok büyükse?

Bu seviyedeki data.txt dosyası binlerce satırdan oluşuyor. Eğer bu dosyayı cat data.txt ile okumaya çalışırsanız, terminaliniz binlerce satır veriyle dolar, ekran akar gider ve aradığınız şeyi görmeniz imkansız hale gelir (Hatta terminaliniz kilitlenebilir!).

Bu seviye, metin madenciliğinin (text mining) en temel aracı olan grep komutunu öğretiyor.

Hedef

Şifre data.txt dosyasının içinde saklı ve “millionth” kelimesinin hemen yanında yer alıyor.

Çözüm

cat ile boğulmak yerine, dosyayı filtreleyelim. grep komutu, kendisine verilen metin içinde belli bir kalıbı (pattern) arar ve sadece o kalıbı içeren satırları ekrana basar.

Komutumuz şu şekilde olacak:

  • grep: “Global Regular Expression Print”.
  • millionth: Aradığımız kelime.
  • data.txt: Arama yapılacak dosya.
grep "millionth" data.txt

Çıktı:

millionth        TESKZC0XvTetK0S9xNwm25STk5iWrBvP

Gördüğünüz gibi, binlerce satır elendi ve karşımıza sadece içinde “millionth” geçen o tek satır geldi. Şifre hemen yanında duruyor.

Öğrendiklerimiz

  1. grep vs find:
    • find: Dosya sisteminde dosya aradığınızda (ismine, boyutuna göre) kullanılır.
    • grep: Bir dosyanın içinde metin aradığınızda kullanılır.
  2. Büyük Dosyalarla Çalışmak: İçeriğini bilmediğiniz veya çok büyük olduğunu tahmin ettiğiniz dosyaları asla doğrudan cat ile açmayın. Önce grep ile filtrelemeyi veya head / less gibi komutlarla parça parça okumayı tercih edin.