Menghitung kemunculan kata dalam file teks


31

Saya memiliki file teks yang berisi tweet dan saya diharuskan menghitung berapa kali sebuah kata disebutkan dalam tweet. Misalnya, file tersebut berisi:

Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?

Dan katakanlah saya ingin menghitung berapa kali kata iPhone disebutkan dalam file. Jadi, inilah yang saya coba.

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l

itu pasti berfungsi tetapi saya bingung tentang perintah 'wc' di unix. Apa bedanya jika saya mencoba sesuatu seperti:

cut -f 1 Tweet_Data | grep -c "iPhone"

di mana -c digunakan sebagai gantinya? Kedua hasil ini berbeda dalam file besar penuh tweet dan saya bingung tentang cara kerjanya. Metode manakah yang merupakan cara yang benar untuk menghitung kejadian?


cut -f1memotong berdasarkan tab, yang tidak banyak membantu di sini. Apakah Anda yakin itu wc -lbenar-benar memberi Anda hitungan yang benar? Ini akan menunjukkan 2 di sini, tapi saya menghitung 3 contoh "iPhone".
— Jeff Schaller


Jawaban:


54

Dengan persyaratan seperti itu, saya akan menggunakan GNU grep (untuk -oopsi ), lalu meneruskannya wcuntuk menghitung jumlah total kejadian:

$ grep -o -i iphone Tweet_Data | wc -l
3

grep -cData polos akan menghitung jumlah baris yang cocok, bukan jumlah total kata yang cocok. Menggunakan -oopsi memberitahu grep untuk menampilkan setiap kecocokan pada baris on-nya, tidak peduli berapa kali kecocokan pada baris tersebut.

wc -lmemberitahu wcutilitas untuk menghitung jumlah baris. Setelah grep menempatkan setiap kecocokan pada barisnya masing-masing, ini adalah jumlah total kemunculan kata dalam input.


Jika GNU grep tidak tersedia (atau diinginkan), Anda bisa mengubah input dengan trsehingga setiap kata pada barisnya sendiri, kemudian gunakan grep -cuntuk menghitung:

$ tr '[:space:]' '[\n*]' < Tweet_Data | grep -i -c iphone
3

1

Metode termudah adalah,

grep -wc "your_text" FileName

untukmu,

grep -wc "iPhone" Tweet_Data

Namun jawaban yang sangat bersih jika Anda mencocokkan kata seperti 'keren' Anda hanya akan cocok dengan keren dan BUKAN ccooll jadi waspadalah bahwa ada spasi di sekitar kata itu.
— jasonleonhard

1
Hasilnya akan salah ketika kata tersebut muncul lebih dari satu kali dalam satu baris.
— hek2mgl
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.