1

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

2 回答 2

0

好吧,您可能不得不使用确切的模式,但一种方法是使用正则表达式:

$b = "hostOSVersion                           8.0.2 7-Mode"
$b -match '(\d.*)'
$c = $matches[1]

如果你真的想用 -replace 把它连起来:

$($($b -replace $a, '') -replace '\s{2}', '').trim()
于 2012-05-18T15:54:07.180 回答
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

于 2012-07-30T11:34:45.347 回答