Eche un vistazo al mensaje de ayuda para wc . El -c La opción imprime el número de caracteres. El echo El 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 su resultado. Puede evitar esto 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 a awk para obtener el número 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.
cuando echo "k" , el echo El comando agrega un carácter de nueva línea a lo que le pediste que imprimiera ("k"). Puedes usar el -n opción para deshabilitar esto:
echo -n k | wc -c
1
Por ver ese invisible carácter, podría volcar flujo 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
Es porque estás usando echo , que agrega una nueva línea a su cadena. Utilice printf en cambio:
$ echo k | wc -c
2
$ printf k | wc -c
1