40
Konuya ait anahtar kelimeler: sort, uniq Bu dersimizde kısa bir örnek komut kullanımını göreceğiz. Bazen bir text dosyası içerisinde yüzlerce hatta binlerce kelime olabilir, ve bu dosya üzerinde işlem yapmak gerçektende çok fazla zaman kaybına neden olabiliyor. Örneğin elimizde olan bir text dosyası düşünelim ve bu dosya içerisinde insan isimlerini barındırıyor olsun. Fakat bu dosyaya isimleri eklerken bazen aynı isimleri birden fazla eklemiş olabiliriz. Yada elimizde bir wordlist olsun fakat wordlist içerisinde birden fazla aynı kelime olsun. Bu gibi durumlarda bütün kelimeleri gözümüz ile tek tek incelemek ve aynı olan kelimeleri tesbit edip silmek zaman kaybına neden olacaktır. Şimdi "isim.txt" adında bir dosyamız olsun ve dosya içeriği aşağıdaki gibi olsun.
[alax@alax ~]$ cat isim.txt ahmet ali berna zerrin mehmet ali veysel berna zerrin asuman sultan ramazan selim rumeysa ismail zeynep ali sultan ismail şükrü berna mehmet
Evet şimdi gördüğünüz üzere aynı isimlerden birden fazla var, bunları elimiz ile silmeye çalışırsak, ki dosyanın yüzbinlerce isimden oluştuğunu düşünün, içinden çıkılmaz bir hale gelecektir. Bu durumlarda kullanabileceğimiz komutlardan bir tanesi " uniq " komutudur. Komutun anlamını "tek olarak" şeklinde yorumlayabiliriz. Yani her değerin yalnızca bir defa döndürülmesidir. Kullanımı: uniq [opsiyonlar] giriş_dosyası çıkış_dosyası şeklinde olmaktadır. Çıkış dosya adı belirtilmez ise Terminal ekranına yazacaktır. Şimdi örnek dosyamız üzernde önce normal cat komutu ile dosya içeriğini görüntüleyelim.
[alax@alax ~]$ cat isim.txt ahmet ali berna zerrin mehmet ali veysel berna zerrin asuman sultan ramazan selim rumeysa ismail zeynep ali sultan ismail şükrü berna mehmet
Şimdi uniq ile deneyelim.
[alax@alax ~]$ uniq isim.txt ahmet ali berna zerrin mehmet ali veysel berna zerrin asuman sultan ramazan selim rumeysa ismail zeynep ali sultan ismail şükrü berna mehmet
Evet hiçbir değişiklik olmadı. Bunun nedeni "uniq" komutu alt alta aynı olan kelimeleri teke indirmektedir. Örneğin, ali mehmet ali kelimelerinde bir değişiklik olmayacaktır, fakat ali ali mehmet kelimelerinde "ali" ismi tek olarak alınıp fazla olan silinecektir. Peki bu durumda nasıl bir yol izlenebilir? Çok basit öncelikle "sort" komutu ile dosyayı sıralar ve aynı olan kelimelerin alt alta gelmesi sağlanır ve boru çıkışı ile "uniq" komutuna çıktı sunulur. Böylece istediğimiz sonucu elde etmiş oluruz. Şimdi örneğimizi son olarak doğru algoritma ile deneyelim.
[alax@alax ~]$ sort isim.txt | uniq ahmet ali asuman berna ismail mehmet ramazan rumeysa selim şükrü sultan veysel zerrin zeynep
Evet istediğimiz sonucu elde ettik. Lütfen pratik yapmayı unutmayınız.