Tengo un archivo de texto que contiene tweets y «debo contar el número de veces que se menciona una palabra en el tweet Por ejemplo, el archivo contiene:
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?
Y digamos que quiero contar cuántas veces se menciona la palabra iPhone en el archivo. Así que esto es lo que he probado.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
Ciertamente funciona pero estoy confundido acerca del comando «wc» en Unix. si intento algo como:
cut -f 1 Tweet_Data | grep -c "iPhone"
donde se usa -c en su lugar? Ambos producen resultados diferentes en un archivo grande lleno de tweets y estoy confundido sobre cómo funciona. ¿Qué método es la forma correcta de contar la ocurrencia?
Comentarios
Responder
Dado ese requisito, use un grep GNU (para la -o
opción ), luego páselo por wc
para contar el número total de ocurrencias:
$ grep -o -i iphone Tweet_Data | wc -l 3
Sencillo grep -c
en los datos contará el número de líneas que coinciden, no el número total de palabras que coinciden. El uso de la opción -o
le dice a grep que genere cada coincidencia en su propia línea, sin importar cuántas veces se haya encontrado la coincidencia en la línea original.
wc -l
le dice a la utilidad wc
que cuente el número de líneas. Después de que grep pone cada coincidencia en su propia línea, este es el número total de apariciones de la palabra en la entrada.
Si GNU grep no está disponible (o lo desea), puede transformar el ingrese con tr
para que cada palabra esté en su propia línea, luego use grep -c
para contar:
$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3
Respuesta
El método más fácil es
grep -wc "your_text" FileName
para ti será,
grep -wc "iPhone" Tweet_Data
Comentarios
- Respuesta muy limpia, sin embargo, si coinciden con una palabra como ' cool ' solo coincidirá con cool y NO ccooll, así que tenga en cuenta que los espacios alrededor de la palabra importan.
- El resultado será incorrecto cuando la palabra aparezca más de una vez en una línea.
cut -f1
está cortando según pestañas, que no ' hace mucho aquí. ¿Estás seguro de quewc -l
realmente te está dando el recuento correcto? Aquí aparecerían 2, pero cuento 3 instancias de " iPhone ".