我正在尝试编写一个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:作为一种很好的做法,围绕字符串使用单引号,除非您明确知道需要双引号。你会避免意外插入。
真棒。这就像一个魅力。感谢您的帮助! –