Giriş
Not : Eğer amacımızı tekil değerleri bulup sıralamaksa, direkt sort komutu da kullanılabilir. Şöyle yaparız
Not : Eğer amacımızı tekil değerleri bulup sıralamaksa, direkt sort komutu da kullanılabilir. Şöyle yaparız
$ printf "lol\nlol\nfoo\n\n\n\n\nbar\nlol\nlol\nfoo\nlol\nfoo" | sort --unique
bar
foo
lol
Girdinin Sıralı Olmasını Bekler
Açıklaması şöyle
Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or standard output).
Örnek - sıralı olmayan veri
Elimizde şöyle bir kod olsun
printf "lol\nlol\nfoo\n\n\n\n\nbar\nlol\nlol\nfoo\nlol\nfoo" | uniq --unique
Çıktı olarak şunu alırız. Tekil değerleri vermez, çünkü girdi sıralı değildir.
foo
bar
foo
lol
foo
Doğru çıktı için şöyle yaparız
printf "lol\nlol\nfoo\n\n\n\n\nbar\nlol\nlol\nfoo\nlol\nfoo" | sort | uniq
Çıktı olarak şunu alırız.
bar
foo
lol
Karşılaştırma Algortiması
Açıklaması şöyle. Yani bu komut aslında string karşılaştırması yapar.
count anlamına gelir. Satırın başına o satırın kaç kere bulunduğunu yazar. Elimizde şöyle bir dosya olsun
duplicate anlamına gelir. İki veya daha fazla olan satırları çıktı olarak verir. Şöyle yaparız.
Note that some uniq implementations like GNU uniq will give you the first of a sequence of lines that sort the same (where strcoll() returns 0) as opposed to are byte-to-byte identical (where memcmp() or strcmp() returns 0). To force a byte to byte comparison regardless of the uniq implementation, you can force the locale to C with:Byte karşılaştırması için şöyle yaparız.
LC_ALL=C uniq your-file
Eğer hiçbir seçenek kullanmazsak tekil olmayan satır bulursa ilk bulduğunu çıktı olarak verir. Açıklaması şöyle
-c seçeneğiWith no options, matching lines are merged to the first occurrence.
count anlamına gelir. Satırın başına o satırın kaç kere bulunduğunu yazar. Elimizde şöyle bir dosya olsun
bird
bird
dog
rabbit
dog
cat
rabbit
dog
bird
cat
bird
bird
Şöyle yaparız.uniq -c <(sort animal.txt) | awk '{print $2,$1}'
Çıktı olarak şunu alırız.bird 5
cat 2
dog 3
rabbit 2
-d seçeneği - Sadece birden fazla olan satırı çıktı verirduplicate anlamına gelir. İki veya daha fazla olan satırları çıktı olarak verir. Şöyle yaparız.
sort input.txt | uniq -d
-u seçeneği - Sadece tekil olan satırı çıktı verir, duplicate olanları da elerBu seçenek zaten varsayılan davranış olduğu için aslında komuta eklemeye gerek yoktur. GNU uniq komutunda -u seçeneği yerine --unique olarak kullanılır.
Örnek
Elimizde şöyle bir dosya olsun
$ cat file
1
2
3
3
4
4
Eğer seçeneksiz kullanırsak çıktı olarak şunu alırız
$ uniq file
1
2
3
4
Eğer -u seçeneği ile kullanırsak çıktı olarak şunu alırız. Burada 3 ve 4 tekil olmadıkları için çıktıya dahil edilmezler.
$ uniq -u file
1
2
Hiç yorum yok:
Yorum Gönder