2012-05-18 197 views
1

我在解析PowerShell中的一些字符串數據時遇到問題,需要一點幫助。基本上我有一個不輸出對象的應用程序命令,而是字符串數據。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

那麼你可能有確切的模式futz左右,但一個方法是使用正則表達式:

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

如果你真的想與-replace到ONELINE它:

$($($b -replace $a, '') -replace '\s{2}', '').trim() 
+0

謝謝主席先生,那第二個單線程做了訣竅。 – user1403741

0

您的線路

$c = ($a -replace "\s+", " ").Split(" ") 

s HOULD參考$ b變量,而不是$一個

$c = ($b -replace "\s+", " ").Split(" ") 

然後,你會注意到$ d的輸出成爲

hostOSVersion 
8.0.2 
7-Mode 

和像$d[1..2] -join ' '語句會產生8.0.2 7-Mode

相關問題