Ejecute wc y muestre solo el recuento de palabras

Ejecute wc y muestre solo el recuento de palabras

He estado intentando crear un archivo llamado ~/dictwords.txt, que contiene la cantidad de palabras que se encuentran en el archivo /usr/share/dict/words.

Ya creé el archivo y luego lo eliminé porque lo hice mal. Originalmente hice el comando echo. Luego probé este comando y me emocioné mucho porque pensé que estaba en lo correcto.

wc -w /usr/share/dict/words > ~/dictwords.txt

Sigue siendo incorrecto, se supone que debo tener solo el número, sin nombre de archivo.

Respuesta1

De forma predeterminada, wcimprime el resultado junto con los nombres de los archivos. Si solo desea el resultado, debe realizar wcuna entrada de lectura desde la entrada estándar:

</usr/share/dict/words wc -w > ~/dicwords.txt

Con su solución actual , puede usar otras herramientas para obtener solo el resultado de wc, como cut,, ...awkgrep

wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt

Aunque eso supone una implementación wcque no agrega caracteres de espacio antes del número, lo cual no es el caso de todas wclas implementaciones.

Respuesta2

Si necesita utilizar el recuento de palabras en el script, puede guardar el valor en una variable:

numWords=$(wc -w /usr/share/dict/words | tr -dc '0-9')

de lo contrario, puedes guardarlo en el archivo:

wc -w /usr/share/dict/words | tr -dc '0-9' > ~/dicwords.txt

Respuesta3

El archivo /usr/share/dict/wordsdebe contener una palabra por línea. En algunos sistemas imagino que podría contener un "término del diccionario" por línea y que cada uno de ellos puede estar formado por más de una palabra delimitada por espacios, pero nunca lo he visto.

Obtienes el número de líneas con uno de

  • wc -l </usr/share/dict/words(cuenta el número de nuevas líneas en el archivo)
  • sed -n '$=' /usr/share/dict/words(en la última línea, genera el número de línea actual)
  • awk 'END { print NR }' /usr/share/dict/words(al final de la entrada, genera el número de registros (líneas) leídos)
  • grep -c '[^[:space:]]' /usr/share/dict/words(cuente el número de líneas que tienen al menos un carácter que no sea un espacio)

De estas, la wc -lvariación es la menos portátil, ya que puede generar, o no, espacios adicionales antes y/o después del número real.

Respuesta4

Aquí hay una solución que usa cat, que evita imprimir el nombre del archivo después del resultado.

cat /usr/share/dict/words | wc -w

información relacionada