我需要在匹配模式后返回的字符串的第三列。它也需要是单线
文件包含这样的数据:
f5834eab44ff bfd0bc8498d8 1557718920
dc8087c38a0d a72e89879030 1557691221
e6d7aaf6d76b caf6cd0ef68c 1557543565
现在,它与模式匹配并返回行。但是我无法在空间上拆分,以便我可以获得第三列(索引2(。
select-string -Path $hashlistfile -Pattern 'dc8087c38a0d') | $_.Split(" ") | $_[2]
输出应为:
1557691221
您可以从Select-String
产生的输出对象中获取Line
属性,然后将其拆分,然后直接索引到String.Split()
的结果:
Select-String -Path $hashlistfile -Pattern dc8087c38a0d |ForEach-Object {
$_.Line.Split(" ")[2]
}
您只能在具有脚本块选项'{}'的cmdlet中使用'$ _'。SELECT-string返回MatchInfo对象。
(select-string dc8087c38a0d $hashlistfile).gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False MatchInfo System.Object
-plit操作员似乎更容易处理它。示例中的模式之后,有一个额外的括号'(。
select-string dc8087c38a0d $hashlistfile | foreach { -split $_ | select -index 2 }
1557691221