OverTheWire Bandit: Seviye 7 → Seviye 8
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
grepvsfind: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.
- Büyük Dosyalarla Çalışmak: İçeriğini bilmediğiniz veya çok büyük olduğunu tahmin ettiğiniz dosyaları asla doğrudan
catile açmayın. Öncegrepile filtrelemeyi veyahead/lessgibi komutlarla parça parça okumayı tercih edin.