On sait que les programmes dotés d'une interface graphique sont plus pratiques à utiliser, car ils sont conçus pour des exigences élevées, et que le terminal permet de réaliser certaines tâches beaucoup plus rapidement. Il existe ainsi un utilitaire, wc, qui permet de compter le nombre de lignes d'un fichier. Le nombre de lignes ne dit pas grand-chose, mais dans le cas où plusieurs commandes sont combinées, vous pouvez compter les lignes, en tenant compte des paramètres nécessaires. Comment compter les lignes d'un fichier Linux ? Voici quelques exemples simples mais efficaces de l'utilisation des commandes grep, sed et awk.
Nous avons déjà examiné la commande WC, mais nous devons maintenant nous familiariser avec l'un de ses paramètres clés -l
. Il compte les transitions vers une nouvelle ligne, c'est-à-dire que la ligne entière est comptée, y compris les lignes vides. La commande s'acquitte de cette tâche plus rapidement que toutes les autres, mais seules certaines chaînes de caractères sont possibles - avec une condition donnée.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Comme nous pouvons le constater, le résultat est le même, mais la commande wc a pris moins de temps pour effectuer la tâche. Les autres commandes s'appliquent à des requêtes complexes. La commande grep vous permet de trouver des chaînes de caractères contenant uniquement du texte : grep -c 'text' nom_de_fichier
.
$ grep -c 'text' file_name
La commande grep gère les expressions régulières, ce qui permet de combiner plusieurs conditions AND, OR, NOT.
La commande sed effectue un traitement de texte, mais il est beaucoup plus facile d'effectuer un décompte final des lignes à l'aide de la commande wc. Vous pouvez supprimer toutes les lignes de moins de trois caractères et les cas complexes sont comptés sans commentaires.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Si la tâche est simple, elle peut être effectuée d'une autre manière. La commande awk sera plus simple et plus facile à comprendre.
$ awk 'length >3' file_name | wc -l
Pour un exemple visuel de la commande awk, effectuons un comptage de chaînes de caractères tout en recherchant la valeur requise dans le fichier de table csv.
Dans l'exemple, comptons le nombre de lignes dont la valeur du deuxième paramètre est supérieure à 50.
$ awk '$2+0 > 50' file_name | wc -l
Ajoutez 0 à l'expression pour supprimer toutes les expressions non numériques.