我正在尝试编写一个powershell脚本来搜索文本文件中的模式。具体来说,我正在寻找逐行读取文件并返回任何在第32个字符位置有空格的行。
到目前为止我有这个,但它只返回所有有空格的行。我需要将其缩小到第32位
Get-Content -path C:\ VM_names.txt | Where-Object {$ _ -match" \ s +"}
答案 0 :(得分:1)
实际上这很容易做到。默认情况下,Get-Content
将文本文件作为字符串数组(单独的行)读取,除非您使用-Raw
参数,该参数将其作为单个字符串读取。您可以使用-match
PowerShell运算符来“匹配”符合正则表达式的行。
(Get-Content -Path c:\VM_names.txt) -match '^.{31}\s'
上述命令的结果是与所需正则表达式匹配的行数组。
注意:对Get-Content
的调用必须用括号括起来,否则PowerShell解析器会认为-match
是该命令的参数。
NOTE2 :作为一种好习惯,请在字符串周围使用单引号,除非您明确知道需要双引号。你可以避免意外插值。
答案 1 :(得分:1)
使用此模式:
-match '^.{31} '
说明:
^ - beginning of the string
. - any character
{31} - repeated 31 times
- a space