我正在嘗試編寫一個powershell腳本來搜索文本文件中的模式。具體來說,我正在逐行閱讀文件,並返回在第32個字符位置處具有空格的任何行。使用powershell搜索模式
我有這個到目前爲止,但它只是返回所有有空白的行。我需要將其縮小到第32位
Get-Content -path C:\ VM_names.txt | Where-Object {$ _ -match「\ s +」}
我正在嘗試編寫一個powershell腳本來搜索文本文件中的模式。具體來說,我正在逐行閱讀文件,並返回在第32個字符位置處具有空格的任何行。使用powershell搜索模式
我有這個到目前爲止,但它只是返回所有有空白的行。我需要將其縮小到第32位
Get-Content -path C:\ VM_names.txt | Where-Object {$ _ -match「\ s +」}
使用此模式:
-match '^.{31} '
說明:
^ - beginning of the string
. - any character
{31} - repeated 31 times
- a space
這實際上很簡單。默認情況下,除非使用-Raw
參數(將其作爲單個字符串讀取),否則Get-Content
會將文本文件讀取爲字符串(單個行)的數組。您可以使用-match
PowerShell運算符來「匹配」符合正則表達式的行。
(Get-Content -Path c:\VM_names.txt) -match '^.{31}\s'
上述命令的結果是匹配所需的正則表達式的線的陣列。
注意:到Get-Content
呼叫必須被包裹在括號,否則PowerShell的解析器會認爲-match
是該命令的參數。
NOTE2:作爲一種很好的做法,圍繞字符串使用單引號,除非您明確知道需要雙引號。你會避免意外插入。
真棒。這就像一個魅力。感謝您的幫助! –