Exécution de commandes Awk dans PowerShell
awk est un langage de script pour la manipulation de données et la génération de rapports. awk est un langage de programmation en ligne de commande qui prend en charge les variables, les fonctions de texte, les fonctions numériques et les opérateurs logiques sans compilation.
Malheureusement, awk n’est pas entièrement intégré à PowerShell car il utilise le système d’exploitation Windows. Cet article explique comment nous pouvons utiliser des commandes et des fonctions similaires aux commandes awk à l’aide de PowerShell.
Exécuter des commandes awk dans PowerShell
L’utilitaire awk permet aux programmeurs de créer des programmes brefs mais puissants sous la forme d’instructions qui spécifient des modèles de texte, ce qui peut être étrange pour les utilisateurs non familiarisés avec les commandes Linux ou Linux en général. Ces modèles de texte sont recherchés dans chaque ligne et une action est entreprise lorsqu’une correspondance est trouvée.
awk est principalement utilisé pour la numérisation et le traitement des modèles. Il explore un ou plusieurs fichiers pour voir s’ils contiennent des lignes qui correspondent aux modèles spécifiés, puis exécute les actions associées.
L’extrait de code suivant est un exemple de commande qui utilise awk.
awk '/"Box11"/ { print $0 }' test.txt|awk '{ SUM += $4} END { print SUM} '
Pour effectuer des opérations similaires comme les commandes awk, nous utiliserions la commande Get-Content pour obtenir le contenu d’un fichier et effectuer quelques opérations de chaîne dans Windows PowerShell. Si nous prenons l’exemple ci-dessus, voici à quoi cela ressemblerait dans PowerShell.
Exemple de code :
Get-Content c:\temp\test.txt |
Where-Object{$_ -match '"Box11"'} |
ForEach-Object{($_ -split "\s+")[3]} |
Measure-Object -Sum |
Select-Object -ExpandProperty Sum
- La commande
Get-Contentrécupère le contenu du fichier texte. - La commande
Where-Objectfiltrera les lignes avec la chaîneBox11. - Ensuite, une fois filtré, le script bouclera pour diviser chaque chaîne de ligne en son 4ème élément. N’oubliez pas que PowerShell commence à l’index
0; ainsi, nous utilisons l’index3au lieu de4, contrairement à notre commandeawk. - Le
Measure-Objecteffectuera un calcul sur la propriété, où il s’agit deSumdans ce cas. - Enfin, le
Select-Objectaffichera la propriété étendueSum.
Si nous remarquons, notre version PowerShell de la commande awk est légèrement plus longue. Heureusement que dans PowerShell, nous pouvons créer des raccourcis en utilisant des alias et quelques opérateurs PowerShell.
Exemple de code :
gc c:\temp\test.txt | ?{$_ -match '"Box11"'} | %{(-split $_)[3]} |
Measure -Sum | Select -Exp Sum
Alternativement, si vous avez activé WSL (Windows Subsystem for Linux), nous pouvons exécuter les commandes awk telles quelles. Une fonctionnalité du système d’exploitation Windows appelée sous-système Windows pour Linux (WSL) vous permet d’exécuter un système de fichiers Linux, complet avec des outils de ligne de commande Linux et des applications graphiques, directement sur Windows.
Il faut donc appeler la commande wsl et exécuter les commandes awk en natif.
Exemple de code :
wsl -e awk '/"Box11"/{sum += $4} END{print sum}' test.txt
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn