Grep çıktısından benzersiz sonuçları nasıl filtreleyebilirim?


75

Linux'ta, kullanarak bir dosyadan bir dize bulabilirim grep mySearchString myFile.txt. Sadece benzersiz olan sonucu nasıl alabilirim?

Yanıtlar:


125

Bunu sortve uniqprogramları ile başarabilirsiniz .

örnek:

[john @ awesome ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest"
Ölçek
Ölçek
Ölçek
başka bir test
Ölçek
[john @ awesome ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest" | sıralama | uniq
başka bir test
Ölçek

verilere bağlı olarak, bazı anahtarlardan da yararlanmak isteyebilirsiniz.


9
@John T - Verilerin sipariş edilmemesi durumunda daha sortönce kullanmanızı tavsiye ederim uniq. Aksi halde uniqtamamen çalışmayacaktır.
Studer

t şimdi oylayabilirim! Ayrıca burada başka senaryolar yazmamda da bana yardım ettin;)
Studer

42
Yerine sort -ukullanın sort | uniq. Bir işlemi kaydeder, toplam G / Ç'yi azaltır ve yapılması gereken toplam karşılaştırma sayısını azaltır.
Chris Johnsen

@ChrisJohnsen Bu yorumu daha iyi bir çözüm olduğundan daha iyi bir çözüm olarak cevaplamalısınız
Nico Van Belle

1

Kullanabilirsiniz:

grep -rohP "(mySearchString)" . | sort -u

-r: özyinelemeli

-o: yalnızca metnin eşleşen bölümünü yazdır

-h: dosya adlarını yazdırma

-P: Perl tarzı regex (durumunuza bağlı olarak -E kullanabilirsiniz)

sort -udaha iyi sort | uniq, @ Chris Johnsen'ın işaret ettiği gibi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.