Utilicé el comando wc -c para contar el número de caracteres pero me da un número incorrecto, número de caracteres más uno como ejemplo:
echo "k" | wc -c
me da 2 caracteres
entonces ¿por qué no 1?
Respuesta1
Eche un vistazo al mensaje de ayuda de wc
. La -c
opción imprime el número de caracteres. El echo
comando incluye un carácter de nueva línea de forma predeterminada. Cuando wc
ve la nueva línea, la cuenta como otro carácter y, por lo tanto, el recuento adicional en el resultado. Puede solucionar este problema utilizando una de las alternativas que se muestran a continuación; -w
cuenta el número de palabras y -l
cuenta el número de líneas.
echo "k" | wc -w
echo "k" | wc -l
Puede canalizar la salida de wc
to awk
para obtener la cantidad de caracteres excluyendo los caracteres de nueva línea:
wc <filename> | awk '{print $3-$1}'
La salida predeterminada de wc
sin opciones imprime la cantidad de caracteres de nueva línea ($1 a awk), la cantidad de palabras y la cantidad de caracteres ($3 a awk) en este orden.
Respuesta2
cuando usted echo "k"
, el echo
comando agrega un carácter de nueva línea a lo que le pidió que imprimiera ("k"). Puede utilizar la -n
opción para desactivar esto:
echo -n k | wc -c
1
Por ver esoinvisiblepersonaje, puedes volcar la secuencia con od
o hd
:
echo k | od -t c
0000000 k \n
echo k | hd
00000000 6b 0a |k.|
echo k | od -t a -A n
k nl
Respuesta3
Es porque estás usando echo
, que agrega una nueva línea a tu cadena. Utilice printf
en su lugar:
$ echo k | wc -c
2
$ printf k | wc -c
1