Saya ingin tahu yang setara
cat inputfile | sed 's/\(.\)/\1\n/g' | sort | uniq -c
disajikan dalam /programming/4174113/how-to-gather-characters-usage-statistics-in-text-file-using-unix-commands untuk pembuatan statistik penggunaan karakter dalam file teks untuk penghitungan file biner byte sederhana alih-alih karakter, yaitu output harus dalam bentuk
18383 57
12543 44
11555 127
8393 0
Tidak masalah jika perintah memakan waktu selama yang direferensikan untuk karakter.
Jika saya menerapkan perintah untuk karakter ke file biner, output berisi statistik untuk urutan panjang karakter yang tidak diinginkan yang sewenang-wenang (saya tidak mencari penjelasan untuk itu).
command-line
files
binary
statistics
Karl Richter
sumber
sumber
| sort -n
dan| sort -n -r
untuk urutan menurun masing-masing (pengurutan bukan bagian dari pertanyaan). Penyortiran mungkin dilakukan dengan lebih baik ...sort -n
sini jauh lebih masuk akal. Jawaban diperbarui.Untuk file besar menggunakan sort akan lambat. Saya menulis program C singkat untuk menyelesaikan masalah yang setara ( lihat intisari Makefile dengan tes ini ):
pemakaian:
sumber
fgets
mendapat garis, bukan buffer-penuh. Anda memindai buffer penuh 4096-byte untuk setiap baris yang dibaca dari stdin. Anda perlu difread
sini, bukanfgets
.if
blok di sekitar pernyataan printf, yang membuat output lebih mudah dibaca jika beberapa byte tidak muncul di file input: gist.github.com/martinvonwittich/…Sebagai maksudnya, sigma dan CV sering penting ketika menilai data statistik dari isi file biner, saya telah membuat program cmdline yang membuat grafik semua data ini sebagai lingkaran ascii dari byte byte dari sigma.
http://wp.me/p2FmmK-96
Dapat digunakan dengan grep, xargs dan alat lain untuk mengekstrak statistik.
sumber
The
recode
Program dapat melakukan ini dengan cepat bahkan untuk file besar, baik statistik frekuensi baik untuk byte atau karakter dari berbagai rangkaian karakter. Misalnya untuk menghitung frekuensi byte:Peringatan - tentukan file Anda untuk dikode ulang sebagai input standar, jika tidak maka diam-diam akan menggantinya dengan frekuensi karakter!
Gunakan
recode utf-8/..count-characters < file
untuk memperlakukan file input sebagai utf-8. Banyak set karakter lainnya tersedia, dan itu akan gagal jika file tersebut mengandung karakter ilegal.sumber
Ini mirip dengan
od
jawaban Stephane tetapi ini menunjukkan nilai ASCII dari byte tersebut. Itu juga diurutkan berdasarkan frekuensi / jumlah kejadian.Saya tidak berpikir ini efisien karena banyak proses dimulai tetapi bagus untuk file tunggal, terutama file kecil.
sumber