linux - script - Comment compter les lignes dans un document?




shell script format (12)

J'ai des lignes comme celles-ci, et je veux savoir combien de lignes j'ai réellement ...

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00   92.00

Y a-t-il un moyen de les compter tous en utilisant les commandes linux?


Ci-dessus sont la méthode préférée, mais la commande "chat" peut également être utile:

cat -n <filename>

Vous montrera tout le contenu du fichier avec les numéros de ligne.


Comme d'autres l'ont dit, wc -l est la meilleure solution, mais pour référence future, vous pouvez utiliser Perl:

perl -lne 'END { print $. }'

$. contient le numéro de ligne et le bloc END sera exécuté à la fin du script.


J'ai vu cette question pendant que je cherchais un moyen de compter plusieurs lignes de fichiers, donc si vous voulez compter plusieurs lignes de fichier d'un fichier .txt, vous pouvez le faire,

cat *.txt | wc -l

il fonctionnera également sur un fichier .txt;)


Je sais que c'est vieux mais toujours: Comptez les lignes filtrées

Mon fichier ressemble à:

Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error

Si je veux savoir combien de fichiers sont envoyés, OK:

grep "OK" <filename> | wc -l

OU

grep -c "OK" filename

L'outil wc est le "compteur de mots" dans les systèmes d'exploitation UNIX et UNIX, vous pouvez également l'utiliser pour compter les lignes dans un fichier, en ajoutant l'option -l , ainsi wc -l foo comptera le nombre de lignes dans foo . Vous pouvez également rediriger la sortie d'un programme comme celui-ci: ls -l | wc -l ls -l | wc -l , qui vous indiquera combien de fichiers se trouvent dans le répertoire courant.


Pour compter toutes les lignes, utilisez:

$ wc -l file

Pour filtrer et compter uniquement les lignes avec l'utilisation du motif:

$ grep -w "pattern" -c file  

Ou utilisez -v pour inverser la correspondance:

$ grep -w "pattern" -c -v file 

Voir la page man grep pour voir les arguments -e, -i et -x ...


Si tout ce que vous voulez, c'est le nombre de lignes (et non le nombre de lignes et le nom de fichier stupide qui revient):

wc -l < /filepath/filename.ext

Comme mentionné précédemment, ceux-ci fonctionnent également (mais sont inférieurs pour d'autres raisons):

awk 'END{print NR}' file       # not on all unixes
sed -n '$=' file               # (GNU sed) also not on all unixes
grep -c ".*" file              # overkill and probably also slower

Si vous voulez vérifier la ligne totale de tous les fichiers dans un répertoire, vous pouvez utiliser find et wc:

find . -type f -exec wc -l {} +

Utilisez wc :

wc -l <filename>

Utilisez wc :

wc -l <filename>

Cela affichera le nombre de lignes dans <filename> :

$ wc -l /dir/file.txt
3272485 /dir/file.txt

Ou, pour omettre le <filename> du résultat, utilisez wc -l < <filename> :

$ wc -l < /dir/file.txt
3272485

Vous pouvez également rediriger les données vers wc :

$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63

cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+' : Pour retourner les chiffres seulement .

wc -l <file.txt>

Ou

command | wc -l




scripting