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
Existe-t-il un moyen de les compter tous à l'aide des commandes Linux?
linux
bash
command-line
scripting
Alucard
la source
la source
g <Ctrl-g>
, il vous montrera le nombre de lignes, de mots, de colonnes et d'octets<esc> :q!
c'est la seule réponse. (Ceci est une blague, cela supprimera toutes les modifications non enregistrées - la blague étant que si vous ne connaissez pas vim, il est facile de gâcher un fichier, il vaut donc mieux ne pas l'enregistrer).Réponses:
Utilisation
wc
:Cela produira le nombre de lignes dans
<filename>
:Ou, pour omettre
<filename>
le résultat, utilisezwc -l < <filename>
:Vous pouvez également diriger des données vers
wc
:la source
wc -l <file> | awk '{print $1}
wc -l < <filename>
cat <file> | wc -l
watch wc -l <filename>
vous pouvez suivre ce fichier en temps réel. C'est utile pour les fichiers journaux par exemple.Pour compter toutes les lignes, utilisez:
Pour filtrer et compter uniquement les lignes avec motif, utilisez:
Ou utilisez -v pour inverser la correspondance:
Consultez la page de manuel grep pour jeter un œil aux arguments -e, -i et -x ...
la source
grep -c
ça marche mieux pour moi. Principalement en raison duwc -l
préfixe d'espace de remplissage ennuyeux de «fonctionnalité».Ou
la source
il y a plusieurs façons. utiliser
wc
est un.wc -l file
d'autres incluent
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)la source
wc -l file
vous donne le nombre de lignes ET le nom de fichier pour obtenir uniquement le nom de fichier que vous pouvez faire:filename.wc -l < /filepath/filename.ext
grep -Hc ".*" file
wc -l
compte les caractères de nouvelle ligne et non les lignes réelles dans un fichier. Toutes les autres commandes incluses dans cette réponse vous donneront le bon numéro au cas où vous auriez besoin des lignes.L'outil
wc
est le "compteur de mots" dans les systèmes d'exploitation UNIX et UNIX, mais vous pouvez également l'utiliser pour compter les lignes dans un fichier en ajoutant l'-l
option.wc -l foo
comptera le nombre de lignesfoo
. Vous pouvez également diriger la sortie d'un programme comme celui-ls -l | wc -l
ci:, qui vous indiquera le nombre de fichiers dans le répertoire actuel (plus un).la source
ls -l | wc -l
vous donnera en fait le nombre de fichiers dans le répertoire +1 pour la ligne de taille totale. vous pouvez fairels -ld * | wc -l
pour obtenir le nombre correct de fichiers.Si vous souhaitez vérifier la ligne totale de tous les fichiers d'un répertoire, vous pouvez utiliser find et wc:
la source
Utilisation
wc
:la source
Si tout ce que vous voulez, c'est le nombre de lignes (et non le nombre de lignes et le stupide nom de fichier qui revient):
Comme mentionné précédemment, ceux-ci fonctionnent également (mais sont inférieurs pour d'autres raisons):
la source
Utilisez
nl
comme ceci:De
man nl
:la source
wc -l
indique 0. Merci.J'utilise ceci:
Je le préfère à la réponse acceptée car il n'imprime pas le nom de fichier, et vous n'avez pas besoin de l'utiliser
awk
pour corriger cela. Réponse acceptée:wc -l myfile.txt
Mais je pense que le meilleur est la réponse du GGB667:
wc -l < myfile.txt
Je vais probablement l'utiliser à partir de maintenant. C'est un peu plus court que moi. Je mets en place mon ancienne façon de le faire au cas où quelqu'un le préférerait. La sortie est la même avec ces deux méthodes.
la source
Ci-dessus sont la méthode préférée mais la commande "cat" peut également être utile:
Vous montrera tout le contenu du fichier avec des numéros de ligne.
la source
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,
il s'exécutera également sur un fichier .txt;)
la source
wc -l
ne compte pas les lignes.Oui, cette réponse peut être un peu tardive pour le parti, mais je n'ai encore trouvé personne documentant une solution plus robuste dans les réponses.
Contrairement à la croyance populaire, POSIX ne nécessite aucun fichier se terminant par un caractère de nouvelle ligne. Oui, la définition d'une ligne POSIX 3.206 est la suivante:
Cependant, ce que beaucoup de gens ignorent, c'est que POSIX définit également la ligne incomplète POSIX 3.195 comme suit :
Par conséquent, les fichiers sans suivi
LF
sont parfaitement conformes à POSIX.Si vous choisissez de ne pas prendre en charge les deux types d'EOF, votre programme n'est pas compatible POSIX.
À titre d'exemple, regardons le fichier suivant.
Peu importe l'EOF, je suis sûr que vous conviendrez qu'il y a deux lignes. Vous avez compris cela en regardant combien de lignes ont été commencées, pas en regardant combien de lignes ont été terminées. En d'autres termes, selon POSIX, ces deux fichiers ont tous deux la même quantité de lignes:
La page de manuel est relativement claire sur le
wc
comptage des sauts de ligne, un saut de ligne n'étant qu'un0x0a
caractère:Par conséquent,
wc
n'essaye même pas de compter ce que vous pourriez appeler une "ligne". Utiliserwc
pour compter les lignes peut très bien conduire à des erreurs de comptage, selon l'EOF de votre fichier d'entrée.Solution compatible POSIX
Vous pouvez utiliser
grep
pour compter les lignes comme dans l'exemple ci-dessus. Cette solution est à la fois plus robuste et précise, et elle prend en charge toutes les différentes saveurs de ce que pourrait être une ligne de votre fichier:la source
grep -oE '\d+'
: Afin de renvoyer les chiffres uniquement .la source
Renvoie uniquement le nombre de lignes
la source
La redirection / canalisation de la sortie du fichier vers
wc -l
devrait suffire, comme suit:qui fournirait alors le non. de lignes uniquement.
la source
Ou comptez toutes les lignes des sous-répertoires avec un modèle de nom de fichier (par exemple, les fichiers journaux avec des horodatages dans le nom du fichier):
la source
Je sais que c'est vieux mais quand même: compte les lignes filtrées
Mon fichier ressemble à:
Si je veux savoir combien de fichiers sont envoyés, OK:
OU
la source
compter le nombre de lignes et stocker le résultat en variable utilisez cette commande:
count=$(wc -l < file.txt) echo "Number of lines: $count"
la source
Comme d'autres l'ont dit,
wc -l
c'est la meilleure solution, mais pour référence future, vous pouvez utiliser Perl:$.
contient le numéro de ligne et leEND
bloc s'exécutera à la fin du script.la source
dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
perl -lne '}{ print $. '
fait de même.Je viens de faire un programme pour faire ça (avec
node
)https://github.com/danschumann/gimme-lines/tree/master
la source
wc -l <filename>
Cela vous donnera le nombre de lignes et le nom de fichier en sortie.
Par exemple.
wc -l 24-11-2019-04-33-01-url_creator.log
Production
63 24-11-2019-04-33-01-url_creator.log
Utilisation
wc -l <filename>|cut -d\ -f 1
pour obtenir uniquement le nombre de lignes en sortie.
Par exemple.
wc -l 24-11-2019-04-33-01-url_creator.log|cut -d\ -f 1
Production
63
la source
wc -l < filename
wc -l < filename
est différent dewc -l filename
, le premier utilise la redirection et puis il n'y a pas de nom de fichier dans la sortie, comme indiqué dans la réponse de user85509Cette fonction de shell portable amovible [ℹ] fonctionne comme un charme. Ajoutez simplement l'extrait suivant à votre
.bashrc
fichier (ou l'équivalent pour votre environnement shell) .Cela devrait être entièrement compatible avec tous les shells compatibles POSIX en plus de bash et zsh .
la source