Exécution de commandes Awk dans PowerShell

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-Content récupère le contenu du fichier texte.
  • La commande Where-Object filtrera les lignes avec la chaîne Box11.
  • 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’index 3 au lieu de 4, contrairement à notre commande awk.
  • Le Measure-Object effectuera un calcul sur la propriété, où il s’agit de Sum dans ce cas.
  • Enfin, le Select-Object affichera la propriété étendue Sum.

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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Article connexe - PowerShell Command