2012-12-06 64 views
0

所以我有包含這樣行的文件:如何從包含字符串的變量中獲取數字? - 電源外殼

Peter Nagy 3 4 6 7 4 

我需要一個電源外殼腳本,它要求用戶提供一個名稱,它的數學出thoose數字的avarage旁邊那個名字。請幫助:)

$name1 = read-host 
$content = Get-Content test.txt 
$talalt = $content | Where-Object { $_ -match $name1 } 

我不知道該做什麼之後,以及如何擺脫這個字符串中的數字。

在此先感謝

回答

2

你基本上需要從第一位數字選擇到該行的結束,分裂出個別號碼,然後將它們平均值例如:

$content | Where-Object { $_ -match $name1 } | 
    Foreach {if ($_ -match '\D+(\d.*)') {-split $matches[1] | measure -average }} 
2

以下應該做你需要的東西:

$name1 = read-host 
$content = Get-Content NamesList.txt 
$talalt = $content | Where-Object { $_ -match $name1 } 

$SplitString = $talalt.split(" ") 

$NumberofNumbers = $SplitString.count-2 

$total = 0; 

for($i=2;$i-le $SplitString.count;$i++) 
{ 
    $total = [int]$SplitString[$i] + $total 
} 

$average = $total/$NumberofNumbers 

write-host "Average for $($name1) is $($average)" 

問候 Arcass

+0

+1這是我要採取的方法 – Tad

+2

如果你使用string.split(「」),你可能會想使用'[StringSplitOptions] :: RemoveEmptyEntries',否則單個數字之間的任何額外空間將生成空的條目在你的$ SplitString數組中。或者你可以使用'-split $ talalt',它會爲你刪除emptry條目。 –

相關問題