83 votes

Compter le nombre de caractères dans un fichier par l'intermédiaire du shell script.

Je veux vérifier le nombre de caractères dans un fichier à partir du début jusqu'au caractère EOF. Je ne sais pas si je peux le faire avec le shell script.

131voto

Dennis Williamson Points 105818

Cela suffira pour le comptage octets dans le dossier :

wc -c filename

Si vous ne voulez que le décompte sans que le nom du fichier soit répété dans la sortie :

wc -c < filename

Cela comptera personnages dans les fichiers multioctets (Unicode, etc.) :

wc -m filename

(comme indiqué dans la réponse de Sébastien).

24voto

#!/bin/sh

wc -m $1 | awk '{print $1}'

wc -m compte le nombre de caractères ; le awk n'affiche que le nombre de caractères, en omettant le nom du fichier.

wc -c vous donnera le nombre d'octets (qui peut être différent du nombre de caractères, car selon l'encodage, un caractère peut être encodé sur plusieurs octets).

6voto

user.py Points 49

Pour obtenir le nombre exact de caractères d'une chaîne, utilisez printf, plutôt que echo, cat ou wc -c directement sur un fichier, car echo, cat, etc. compteront un caractère de retour à la ligne, ce qui vous donnera le nombre de caractères y compris le caractère de retour à la ligne. Ainsi, un fichier contenant le texte "hello" affichera 6 si vous utilisez echo, etc., mais si vous utilisez printf, il renverra exactement 5, car il n'y a pas de caractère de retour à la ligne à compter.

Comment utiliser printf pour compter les caractères dans les chaînes de caractères :

$printf '6chars' | wc -m
6

Pour transformer ceci en un script que vous pouvez exécuter sur un fichier texte pour compter les caractères, enregistrez ce qui suit dans un fichier appelé print-character-amount.sh :

#!/bin/bash
characters=$(cat "$1")
printf "$characters" | wc -m

chmod +x sur le fichier print-character-amount.sh contenant le texte ci-dessus, placez le fichier dans votre PATH (c'est-à-dire /usr/bin/ ou tout répertoire exporté comme PATH dans votre fichier .bashrc) puis exécutez script sur le fichier texte :

print-character-amount.sh file-to-count-characters-of.txt

5voto

Vijay Points 17992
awk '{t+=length($0)}END{print t}' file3

1voto

kurumi Points 10096

Awk uniquement

awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)c++}END{print "total chars:"c}' file

coquille seulement

var=$(<file)
echo ${#var}

Ruby (1.9+)

ruby -0777 -ne 'print $_.size' file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X