Powershell - 搜索字符串,删除多余的空格,打印第二个字段

时间:2012-05-18 15:46:19

标签: powershell replace split

我在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 ", "")

2 个答案:

答案 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