Consultez le message d'aide pour wc
. Le -c
option imprime le nombre de caractères. Le echo
La commande inclut un caractère de saut de ligne par défaut. Quand wc
voit la nouvelle ligne, il la compte comme un autre caractère et donc le nombre supplémentaire dans votre résultat. Vous pouvez contourner ce problème en utilisant l'une des alternatives présentées ci-dessous. -w
compte le nombre de mots et -l
compte le nombre de lignes.
echo "k" | wc -w
echo "k" | wc -l
Vous pouvez diriger la sortie de wc
à awk
pour obtenir le nombre de caractères excluant les caractères de saut de ligne :
wc <filename> | awk '{print $3-$1}'
La sortie par défaut de wc
sans option affiche le nombre de caractères de retour à la ligne (1 $ à awk), le nombre de mots et le nombre de caractères (3 $ à awk) dans cet ordre.
quand tu echo "k"
, le echo
La commande ajoute un caractère de nouvelle ligne à tout ce que vous lui avez demandé d'imprimer ("k"). Vous pouvez utiliser le -n
option pour désactiver ceci :
echo -n k | wc -c
1
Pour voir cet invisible caractère, vous pouvez vider le flux avec 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
C'est parce que vous utilisez echo
, qui ajoute une nouvelle ligne à votre chaîne. Utilisez printf
à la place :
$ echo k | wc -c
2
$ printf k | wc -c
1