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.

0voto

Paresh Points 1

Le script suivant est testé et donne exactement les résultats attendus

\#!/bin/bash

echo "Enter the file name"

read file

echo "enter the word to be found"

read word

count=0

for i in \`cat $file`

do

if [ $i == $word ]

then

count=\`expr $count + 1`

fi

done

echo "The number of words are $count"

0voto

Mark Setchell Points 11698

J'aurais pensé qu'il serait préférable d'utiliser stat pour trouver la taille d'un fichier, puisque le système de fichiers la connaît déjà, plutôt que de devoir lire tout le fichier avec la fonction awk o wc - surtout s'il s'agit d'un fichier de plusieurs Go ou d'un fichier qui peut être non résident dans le système de fichiers d'un HSM.

stat -c%s file

Oui, je reconnais qu'il ne prend pas en compte les caractères multi-octets, mais j'ajouterais que l'OP n'a jamais précisé si c'était ou non un problème.

0voto

qräbnö Points 737

Crédits à user.py et al.


echo "ää" > /tmp/your_file.txt
cat /tmp/your_file.txt | wc -m

se traduit par 3 .

Dans mon exemple, le résultat attendu est 2 (deux fois la lettre ä ). Cependant, echo (ou vi) ajoute un saut de ligne \n jusqu'à la fin de la sortie (ou du fichier). Ainsi, deux ä et un saut de ligne Linux \n sont comptabilisés. Cela fait trois ensemble.

Travailler avec des tuyaux | n'est pas la variante la plus courte, mais je dois donc en savoir moins wc par cœur. En outre, cat est à l'épreuve des balles, d'après mon expérience.

Testé sur Ubuntu 18.04.1 LTS (Bionic Beaver).

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