Metin dosyasında kelimenin oluşumunu sayma


31

Tweet'leri içeren bir metin dosyasına sahibim ve bir kelimenin tweet'te kaç kez bulunduğunu saymam gerekiyor. Örneğin, dosya şunları içerir:

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?

Ve diyelim ki, iPhone kelimesinin dosyada kaç kez geçtiğini saymak istiyorum. İşte denedim.

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

kesinlikle çalışıyor ama unix'deki 'wc' komutu konusunda kafam karıştı. Gibi bir şey denersem fark nedir:

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

bunun yerine nerede -c kullanılıyor? Bunların her ikisi de tweet'lerle dolu büyük bir dosyada farklı sonuçlar veriyor ve nasıl çalıştığı konusunda kafam karıştı. Hangi yöntem, oluşumu saymanın doğru yoludur?


cut -f1burada fazla iş yapamayan sekmelere göre kesim yapıyor. Bunun sana wc -lgerçekten doğru sayıyı verdiğinden emin misin? Burada 2 gösterir, ancak "iPhone" un 3 örneğini sayarım.
Jeff Schaller


Yanıtlar:


54

Böyle bir gereklilik göz önüne alındığında, bir GNU grep ( -oseçenek için ) kullanır, sonrawc toplam oluşum sayısını saymak için geçer .

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

grep -cVerilerdeki düz , eşleşen toplam sözcük sayısını değil, eşleşen satır sayısını sayar . Bu seçeneğin kullanılması eşleşmeye kaç kez eşleşirse eşleşsin, eşleşmeyi satırında çevrimiçi yapmasını söyler.-o

wc -lwcyardımcı programa satır sayısını saymasını söyler . Grep, her eşleşmeyi kendi satırına koyduktan sonra, bu girişteki kelimenin toplam oluşum sayısıdır.


GNU grep kullanılamıyorsa (veya isteniyorsa), girişi trher bir kelime kendi satırında olacak şekilde dönüştürebilir , sonra grep -csaymak için kullanabilirsiniz :

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

1

En kolay yöntem

grep -wc "your_text" FileName

senin için olacak,

grep -wc "iPhone" Tweet_Data

Çok temiz cevap, ancak 'cool' gibi bir kelimeyle eşleşiyorsanız, sadece cool ve NOT ccooll ile eşleşirsiniz, bu yüzden kelimenin etrafındaki boşlukların farkında olun.
jasonleonhard

1
Sözcük bir satırda birden fazla kez meydana geldiğinde sonuç yanlış olacaktır.
hek2mgl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.