Ausführen von awk-Befehlen in PowerShell

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-Content ruft den Inhalt der Textdatei ab.
  • Der Befehl Where-Object filtert die Zeilen mit der Zeichenfolge Box11.
  • Nach dem Herausfiltern durchläuft das Skript eine Schleife, um jede Zeichenfolge in ihr viertes Element aufzuteilen. Denken Sie daran, dass PowerShell bei Index 0 beginnt; Daher verwenden wir den Index 3 anstelle von 4, anders als in unserem awk-Befehl.
  • Das Measure-Object führt eine Berechnung auf der Eigenschaft durch, wobei es in diesem Fall Sum ist.
  • Zuletzt gibt das Select-Object die expandierte Eigenschaft Sum aus.

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 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

Verwandter Artikel - PowerShell Command