Comment filtrer la sortie d’une commande à l’aide de awk et STDIN
Dans les parties précédentes de la série de commandes Awk, nous avons examiné la lecture des entrées principalement à partir de fichiers, mais que se passe-t-il si vous voulez lire les entrées de STDIN ?
Dans la partie 7 de la série Awk, nous allons voir quelques exemples où vous pouvez filtrer la sortie d’autres commandes au lieu de lire l’entrée d’un fichier.
Liste des fichiers appartenant à l’utilisateur dans le répertoire
Nous allons commencer par la commande dir, qui fonctionne de la même manière que la commande ls. Dans le premier exemple ci-dessous, nous utilisons le résultat de la commande dir -l comme entrée pour awk afin d’imprimer le nom d’utilisateur du propriétaire, le nom du groupe et les fichiers qu’il possède dans le répertoire actuel :
dir -l | awk '{print $3, $4, $9;}'
Liste des fichiers appartenant à l’utilisateur racine
Jetez un coup d’œil à un autre exemple où nous employons des expressions awk, ici, nous voulons imprimer des fichiers appartenant à l’utilisateur root en utilisant une expression pour filtrer les chaînes comme dans la commande awk ci-dessous :
dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '
La commande ci-dessus inclut l’opérateur de comparaison (==) pour nous aider à filtrer les fichiers du répertoire courant qui appartiennent à l’utilisateur root. Ceci est réalisé en utilisant l’expression $3== « racine ».
Utiliser l’opérateur de comparaison awk pour faire correspondre la chaîne
Regardons un autre exemple où nous utilisons un opérateur de comparaison awk pour faire correspondre une certaine chaîne.
Ici, nous avons utilisé la commande cat pour afficher le contenu d’un fichier nommé tecmint_deals.txt et nous voulons afficher les offres de type Tech uniquement, nous allons donc exécuter les commandes suivantes :
cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'
Dans l’exemple ci-dessus, nous avons utilisé l’opérateur de comparaison de valeur ~ /pattern/, mais il y a deux commandes pour essayer de faire ressortir quelque chose de très important.
Lorsque vous exécutez la commande avec pattern tech, rien n’est imprimé car il n’y a pas d’accord de ce type, mais avec Tech, vous obtenez des accords de type Tech.
Soyez donc toujours prudent lorsque vous utilisez cet opérateur de comparaison, il est sensible à la casse comme nous l’avons vu ci-dessus.
Vous pouvez toujours utiliser la sortie d’une autre commande à la place comme entrée pour awk au lieu de lire l’entrée d’un fichier, c’est très simple comme nous l’avons vu dans les exemples ci-dessus.
Filtrer les fichiers modifiés aujourd’hui
Maintenant, pour filtrer les fichiers modifiés aujourd’hui, vous pouvez utiliser awk pour extraire et afficher ces fichiers :
ls -l | awk '$6 == "Aug" && $7 == "9" {print $9}'
Cette commande filtre les fichiers modifiés le 9 août
Compter les fichiers d’un type spécifique
Pour compter le nombre de fichiers .txt dans un répertoire, utilisez :
ls -l | awk '$9 ~ /\.txt$/ {count++} END {print count}'
Extraire des champs spécifiques de la sortie de la commande
Si vous souhaitez extraire des champs spécifiques de la sortie d’une commande ps, tels que l’ID de processus et le nom de la commande :
ps aux | awk '{print $1, $2, $11}'
J’espère que les exemples étaient suffisamment clairs pour que vous les compreniez, si vous avez des préoccupations, vous pouvez les exprimer à travers la section des commentaires ci-dessous, et n’oubliez pas de consulter la prochaine partie de la série où nous examinerons les fonctionnalités awk telles que les variables, les expressions numériques et les opérateurs d’affectation.
Pour ceux qui recherchent une ressource complète, nous avons compilé tous les articles de la série Awk dans un livre, qui comprend 13 chapitres et s’étend sur 41 pages, couvrant à la fois l’utilisation de base et avancée d’Awk avec des exemples pratiques.
| Nom du produit | Prix | Acheter |
|---|---|---|
| eBook : Présentation du guide de démarrage Awk pour les débutants | 8,99 $ | [Acheter maintenant] |


