Saya memiliki file teks yang memiliki berbagai kata per baris.
Bagaimana saya bisa menemukan 12 baris yang paling sering muncul dalam file dan menampilkannya?
Saya tidak begitu baik dengan perintah scripting.
Jika saya bisa mendapatkan perintah dan penjelasan sehingga saya bisa mengerti cara menggunakannya dan memperluas pengetahuan saya tentang perintah itu akan bagus!
Jawaban:
Anda dapat dengan mudah melakukan ini dengan perintah bawaan.
sort
. Kami membutuhkan ini untuk langkah selanjutnya.uniq -c
. Ini akan menghitung kemunculan unik dari setiap baris. Jika garis yang serupa tidak berdekatan, ini tidak akan berhasil tanpa menyortir sebelumnya.sort
, yang sekarang mengurutkan dalam urutan terbalik (r
) dan berdasarkann
interpretasi numerik ( ) dariuniq
output. Kita perlu opsi numerik karena jika tidak, ruang di depan nomor akan mengakibatkan hasil yang salah (lihat GNUsort
bantuan 's untuk lebih).head
.Perintahnya adalah:
Output di sini berisi jumlah kejadian yang sebenarnya.
Untuk hanya mendapatkan daftar garis mentah, Anda dapat menyalurkan output ke
sed
:Contoh:
Output dari perintah pertama, tetapi hanya memilih 2 dari
head
:Output dari perintah kedua:
sumber
uniq
.sort -rn
dalam urutan terbalik menggunakan sebagai bidang pengurutan nomor di sebelah setiap baris yang diproduksi olehuniq -c
? Saya pikir sesuatu sepertik1
atau sesuatu seperti itu akan digunakanr
membalikkan, dan secaran
numerik mengurutkan pada nomor yang dihasilkan olehuniq
. Apa sebenarnya yang Anda maksud dengank1
?man
dan saya mengerti bahwa sintaks menggunakan-k
sesuatu harus digunakan untuk memilih bidang untuk mengurutkan berdasarkanJika distro Anda memiliki logtop
Jika file Anda terus bertambah, seperti file log, coba:
sumber