我在PowerShell中解析一些字符串数据时遇到问题,需要一些帮助。基本上我有一个不输出对象的应用程序命令,而不是字符串数据。
a = is the item I'm searching for
b = is the actual ouput from the command
c = replaces all the excess whitespace with a single space
d = is supposed to take $c "hostOSVersion 8.0.2 7-Mode" and just print "8.0.2 7-Mode"
然而,$ d无效,它只打印与$ c相同的值。我是一个UNIX人,在一个awk语句中这很容易。如果您知道如何在一个很好的命令中执行此操作,或者只是告诉我下面的$ d语法有什么问题。
$a = "hostOSVersion"
$b = "hostOSVersion 8.0.2 7-Mode"
$c = ($a -replace "\s+", " ").Split(" ")
$d = ($y -replace "$a ", "")
答案 0 :(得分:0)
嗯,你可能不得不使用确切的模式,但一种方法是使用正则表达式:
$b = "hostOSVersion 8.0.2 7-Mode"
$b -match '(\d.*)'
$c = $matches[1]
如果你真的想用-replace上线:
$($($b -replace $a, '') -replace '\s{2}', '').trim()
答案 1 :(得分:0)
你的行
$c = ($a -replace "\s+", " ").Split(" ")
应该引用$ b变量而不是$ a
$c = ($b -replace "\s+", " ").Split(" ")
然后,您会注意到$ d的输出变为
hostOSVersion
8.0.2
7-Mode
和$d[1..2] -join ' '
之类的语句会生成8.0.2 7-Mode