shell de Linux wc -c contar caracteres +1

shell de Linux wc -c contar caracteres +1

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 -copción imprime el número de caracteres. El echocomando incluye un carácter de nueva línea de forma predeterminada. Cuando wcve 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; -wcuenta el número de palabras y -lcuenta el número de líneas.

echo "k" | wc -w 
echo "k" | wc -l

Puede canalizar la salida de wcto awkpara obtener la cantidad de caracteres excluyendo los caracteres de nueva línea:

wc <filename> | awk '{print $3-$1}'

La salida predeterminada de wcsin 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 echocomando agrega un carácter de nueva línea a lo que le pidió que imprimiera ("k"). Puede utilizar la -nopción para desactivar esto:

echo -n k | wc -c
1

Por ver esoinvisiblepersonaje, puedes volcar la secuencia con odo 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 printfen su lugar:

$ echo k | wc -c 
       2
$ printf k | wc -c
       1

información relacionada