
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, wc
imprime el resultado junto con los nombres de los archivos. Si solo desea el resultado, debe realizar wc
una 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
,, ...awk
grep
wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt
Aunque eso supone una implementación wc
que no agrega caracteres de espacio antes del número, lo cual no es el caso de todas wc
las 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/words
debe 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 -l
variació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