Usei o comando wc -c para contar o número de caracteres, mas me deu um número errado, número de caracteres mais um como exemplo:
echo "k" | wc -c
isso me dá 2 caracteres
então por que não 1?
Responder1
Dê uma olhada na mensagem de ajuda para wc
. A -c
opção imprime o número de caracteres. O echo
comando inclui um caractere de nova linha por padrão. Quando wc
vê a nova linha, ela conta como outro caractere e, portanto, a contagem adicional no seu resultado. Você pode contornar isso usando uma das alternativas mostradas abaixo; -w
conta o número de palavras e -l
conta o número de linhas.
echo "k" | wc -w
echo "k" | wc -l
Você pode canalizar a saída de wc
to awk
para obter o número de caracteres, excluindo os caracteres de nova linha:
wc <filename> | awk '{print $3-$1}'
A saída padrão wc
sem opções imprime o número de caracteres de nova linha ($1 para awk), número de palavras e número de caracteres ($3 para awk) nesta ordem.
Responder2
quando você echo "k"
, o echo
comando acrescenta um caractere de nova linha ao que você pediu para imprimir ("k"). Você pode usar a -n
opção para desativar isso:
echo -n k | wc -c
1
Para ver issoinvisívelpersonagem, você pode despejar stream com od
ou 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
Responder3
É porque você está usando echo
, que adiciona uma nova linha à sua string. Use printf
em vez disso:
$ echo k | wc -c
2
$ printf k | wc -c
1