Ausführen von awk-Befehlen in PowerShell
 
awk ist eine Skriptsprache zur Datenmanipulation und Berichterstellung. awk ist eine Befehlszeilen-Programmiersprache, die Variablen, Textfunktionen, numerische Funktionen und logische Operatoren ohne Kompilierung unterstützt.
Leider ist awk nicht vollständig in PowerShell integriert, da es das Windows-Betriebssystem verwendet. In diesem Artikel wird erläutert, wie wir mit PowerShell ähnliche Befehle und Funktionen wie die awk-Befehle verwenden können.
Führen Sie awk-Befehle in PowerShell aus
Mit dem Dienstprogramm awk können Programmierer kurze, aber leistungsstarke Programme in Form von Anweisungen erstellen, die Textmuster angeben, was für Benutzer, die mit Linux-Befehlen oder Linux im Allgemeinen nicht vertraut sind, seltsam sein kann. Diese Textmuster werden in jeder Zeile durchsucht, und Maßnahmen werden ergriffen, wenn eine Übereinstimmung gefunden wird.
awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es untersucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die den angegebenen Mustern entsprechen, und führt dann die zugehörigen Aktionen aus.
Das folgende Code-Snippet ist ein Beispiel für einen Befehl, der awk verwendet.
awk '/"Box11"/ { print $0 }' test.txt|awk '{ SUM += $4} END { print SUM} '
Um ähnliche Operationen wie die awk-Befehle auszuführen, würden wir den Get-Content-Befehl verwenden, um den Inhalt einer Datei abzurufen und ein paar Zeichenfolgenoperationen in Windows PowerShell auszuführen. Wenn wir das obige Beispiel nehmen, würde es in PowerShell so aussehen.
Beispielcode:
Get-Content c:\temp\test.txt |
Where-Object{$_ -match '"Box11"'} |
ForEach-Object{($_ -split "\s+")[3]} |
Measure-Object -Sum |
Select-Object -ExpandProperty Sum
- Der Befehl Get-Contentruft den Inhalt der Textdatei ab.
- Der Befehl Where-Objectfiltert die Zeilen mit der ZeichenfolgeBox11.
- Nach dem Herausfiltern durchläuft das Skript eine Schleife, um jede Zeichenfolge in ihr viertes Element aufzuteilen. Denken Sie daran, dass PowerShell bei Index 0beginnt; Daher verwenden wir den Index3anstelle von4, anders als in unseremawk-Befehl.
- Das Measure-Objectführt eine Berechnung auf der Eigenschaft durch, wobei es in diesem FallSumist.
- Zuletzt gibt das Select-Objectdie expandierte EigenschaftSumaus.
Wie wir bemerken, ist unsere PowerShell-Version des awk-Befehls etwas länger. Gut, dass wir in PowerShell Verknüpfungen erstellen können, indem wir Aliase und einige PowerShell-Operatoren verwenden.
Beispielcode:
gc c:\temp\test.txt | ?{$_ -match '"Box11"'} | %{(-split $_)[3]} |
  Measure -Sum | Select -Exp Sum
Wenn Sie alternativ WSL (Windows Subsystem for Linux) aktiviert haben, können wir awk-Befehle unverändert ausführen. Eine Funktion des Windows-Betriebssystems namens Windows Subsystem for Linux (WSL) ermöglicht es Ihnen, ein Linux-Dateisystem komplett mit Linux-Befehlszeilentools und GUI-Anwendungen direkt unter Windows auszuführen.
Also müssen wir den Befehl wsl aufrufen und awk-Befehle nativ ausführen.
Beispielcode:
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