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:作为一种很好的做法,围绕字符串使用单引号,除非您明确知道需要双引号。你会避免意外插入。