Bagaimana saya bisa memfilter hasil unik dari keluaran grep?


75

Di linux, saya bisa mengambil string dari file menggunakan grep mySearchString myFile.txt. Bagaimana saya bisa mendapatkan hasil yang unik?

Jawaban:


125

Anda dapat mencapai ini dengan sortdan uniqutilitas.

contoh:

[john @ mengagumkan ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest"
uji
uji
uji
tes lain
uji
[john @ mengagumkan ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest" | sortir | uniq
tes lain
uji

tergantung pada data yang Anda mungkin ingin memanfaatkan beberapa sakelar juga.


9
@ John T - Saya akan merekomendasikan untuk menggunakan sortsebelumnya uniqjika data tidak dipesan. Kalau uniqtidak, tidak akan sepenuhnya bekerja.
Studer

t sekarang saya dapat mengungguli! Anda juga membantu saya menulis skrip orang lain di sini;)
Studer

42
Gunakan sort -usebagai ganti sort | uniq. Menghemat proses, mengurangi I / O total, dan mengurangi jumlah perbandingan yang harus dibuat.
Chris Johnsen

@ChrisJohnsen Anda harus membuat komentar itu sebagai jawaban karena ini adalah solusi yang lebih baik daripada jawaban yang diberikan saat ini
Nico Van Belle

1

Anda dapat gunakan:

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

-r: rekursif

-o: hanya mencetak bagian teks yang cocok

-h: jangan cetak nama file

-P: Perl style regex (Anda dapat menggunakan -E sebagai gantinya tergantung pada kasus Anda)

sort -ulebih baik daripada sort | uniq, seperti yang ditunjukkan oleh @Chris Johnsen.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.