Tengo un archivo de texto que contiene tweets y debo contar la cantidad 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 intentado.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
Ciertamente funciona, pero estoy confundido sobre el comando 'wc' en Unix. ¿Cuál es la diferencia 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?
text-processing
grep
cut
Maxxx
fuente
fuente
cut -f1
es cortar basado en pestañas, que no está haciendo mucho aquí. ¿Estás seguro de quewc -l
realmente te está dando el recuento correcto? Mostraría 2 aquí, pero cuento 3 instancias de "iPhone".Respuestas:
Dado tal requisito, usaría un grep de GNU (para la
-o
opción ), luego lo pasaríawc
para contar el número total de ocurrencias:Los
grep -c
datos simples contarán el número de líneas que coinciden, no el número total de palabras que coinciden. Usar la-o
opción le dice a grep que muestre cada coincidencia en su línea, sin importar cuántas veces la coincidencia esté en la línea.wc -l
le dice a lawc
utilidad que cuente el número de líneas. Después de que grep coloca 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 no lo desea), puede transformar la entrada
tr
para que cada palabra esté en su propia línea, luego usegrep -c
para contar:fuente
El método más fácil es
para ti será,
fuente