在 PowerShell 中執行 awk 命令
awk
是一種用於資料操作和報告生成的指令碼語言。awk
是一種命令列程式語言,無需編譯即可支援變數、文字函式、數值函式和邏輯運算子。
不幸的是,awk
沒有完全整合到 PowerShell 中,因為它使用的是 Windows 作業系統。本文將討論如何使用 PowerShell 使用與 awk
命令類似的命令和功能。
在 PowerShell 中執行 awk
命令
awk
實用程式允許程式設計師以指定文字模式的語句的形式建立簡短但功能強大的程式,這對於不熟悉 Linux 命令或一般 Linux 的使用者可能會感到陌生。在每一行中搜尋這些文字模式,並在找到匹配項時採取措施。
awk
主要用於模式掃描和處理。它探索一個或多個檔案以檢視它們是否包含與指定模式匹配的行,然後執行相關操作。
以下程式碼片段是使用 awk
的命令示例。
awk '/"Box11"/ { print $0 }' test.txt|awk '{ SUM += $4} END { print SUM} '
要執行類似 awk
命令的操作,我們將使用 Get-Content
命令獲取檔案的內容並在 Windows PowerShell 中執行幾個字串操作。如果我們採用上面的示例,這就是它在 PowerShell 中的樣子。
示例程式碼:
Get-Content c:\temp\test.txt |
Where-Object{$_ -match '"Box11"'} |
ForEach-Object{($_ -split "\s+")[3]} |
Measure-Object -Sum |
Select-Object -ExpandProperty Sum
Get-Content
命令將獲取文字檔案的內容。Where-Object
命令將過濾帶有Box11
字串的行。- 然後,一旦過濾掉,指令碼將迴圈以將每個行字串拆分到其第 4 個元素中。請記住,PowerShell 從索引
0
開始;因此,我們使用索引3
而不是4
,這與我們的awk
命令不同。 Measure-Object
將對屬性執行計算,在這種情況下為Sum
。- 最後,
Select-Object
將輸出Sum
擴充套件屬性。
如果我們注意到,我們的 PowerShell 版本的 awk
命令會稍長一些。好在在 PowerShell 中,我們可以通過使用別名和幾個 PowerShell 運算子來建立快捷方式。
示例程式碼:
gc c:\temp\test.txt | ?{$_ -match '"Box11"'} | %{(-split $_)[3]} |
Measure -Sum | Select -Exp Sum
或者,如果你啟用了 WSL(適用於 Linux 的 Windows 子系統),我們可以按原樣執行 awk
命令。Windows 作業系統的一項稱為 Linux 的 Windows 子系統 (WSL) 的功能使你能夠直接在 Windows 上執行 Linux 檔案系統,以及 Linux 命令列工具和 GUI 應用程式。
所以我們必須呼叫 wsl
命令並本地執行 awk
命令。
示例程式碼:
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