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