2016-11-04 66 views
0

我正在嘗試編寫一個powershell腳本來搜索文本文件中的模式。具體來說,我正在逐行閱讀文件,並返回在第32個字符位置處具有空格的任何行。使用powershell搜索模式

我有這個到目前爲止,但它只是返回所有有空白的行。我需要將其縮小到第32位

Get-Content -path C:\ VM_names.txt | Where-Object {$ _ -match「\ s +」}

回答

1

使用此模式:

-match '^.{31} ' 

說明:

^ - beginning of the string 
. - any character 
{31} - repeated 31 times 
    - a space 
+0

真棒。這就像一個魅力。感謝您的幫助! –

1

這實際上很簡單。默認情況下,除非使用-Raw參數(將其作爲單個字符串讀取),否則Get-Content會將文本文件讀取爲字符串(單個行)的數組。您可以使用-match PowerShell運算符來「匹配」符合正則表達式的行。

(Get-Content -Path c:\VM_names.txt) -match '^.{31}\s' 

上述命令的結果是匹配所需的正則表達式的線的陣列。

注意:到Get-Content呼叫必須被包裹在括號,否則PowerShell的解析器會認爲-match是該命令的參數。

NOTE2:作爲一種很好的做法,圍繞字符串使用單引號,除非您明確知道需要雙引號。你會避免意外插入。