GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menemukan Kata Yang Paling Sering Di File .csv, Mengabaikan Duplikat Pada Setiap Baris?

Saya perlu menemukan 10 kata paling sering dalam file .csv.
File terstruktur sehingga setiap baris berisi kata-kata yang dipisahkan koma. Jika kata yang sama diulang lebih dari satu kali dalam baris yang sama, itu harus dihitung sebagai satu.
Jadi, pada contoh di bawah ini:

green,blue,blue,yellow,red,yellow
red,blue,green,green,green,brown

hijau, biru dan merah harus dihitung sebagai 2 dan kuning dan coklat sebagai 1

Saya tahu pertanyaan serupa telah ditanyakan sebelumnya, dan salah satu solusinya adalah:

<file.csv tr -c '[:alnum:]' '[\n*]' | sort|uniq -c|sort -nr|head  -10

Tapi ini akan menghitung berapa kali sebuah kata muncul di baris yang sama, seperti ini:

  4 green
  3 blue
  2 yellow
  2 red
  1 brown

dan ini sebenarnya bukan yang saya butuhkan.
Ada bantuan? Saya juga akan menghargai penjelasan singkat tentang perintah tersebut dan mengapa perintah yang saya temukan dalam pertanyaan serupa tidak melakukan apa yang saya butuhkan.

Jawaban yang Diterima:

Saya mungkin akan meraih perl

  • Gunakan uniq dari List::Util modul untuk menghapus duplikat setiap baris.
  • Gunakan hash untuk menghitung kemunculan yang dihasilkan.

Misalnya

perl -MList::Util=uniq -F, -lnE '
  map { $h{$_}++ } uniq @F 
  }{ 
  foreach $k (sort { $h{$b} <=> $h{$a} } keys %h) {say "$h{$k}: $k"}
' file.csv
2: red
2: green
2: blue
1: yellow
1: brown

Jika Anda tidak memiliki pilihan kecuali sort dan uniq coreutils, maka Anda dapat mengimplementasikan algoritme serupa dengan penambahan loop shell

while IFS=, read -a words; do 
  printf '%s\n' "${words[@]}" | sort -u
done < file.csv | sort | uniq -c | sort -rn
  2 red
  2 green
  2 blue
  1 yellow
  1 brown

namun silakan merujuk ke Mengapa menggunakan loop shell untuk memproses teks dianggap sebagai praktik yang buruk?


Linux
  1. Cara Menyisipkan Teks di awal setiap baris di Vim

  2. Temukan N Kata Paling Sering Dalam Sebuah File?

  3. Temukan N Kata Paling Sering Dalam File Dengan Daftar Kata Berhenti Dari Baris Perintah?

  1. Bagaimana Menemukan Jenis File Img Dan Memasangnya?

  2. Bagaimana Mengurai Setiap Baris File Teks Sebagai Argumen Untuk Perintah?

  3. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  1. cara menemukan pemilik file atau direktori dengan python

  2. Di Bash, bagaimana cara menambahkan string setelah setiap baris dalam file?

  3. Bagaimana saya bisa membuat file di setiap folder?