2015-10-21 35 views
1

我仍然是Powershell的初學者。我正在閱讀由軟件生成的製表符分隔文本文件,以篩選出一組值。但生成的值全部採用類似於IEEE浮點格式的格式。 (例如:1.5656565656E + 02)。在Import-Csv cmdlet中輸入科學格式的值(例如:1.565656E + 02)

我嘗試了'-as'運營商,但沒用。我收到一個錯誤。請幫我解決這個問題,或者有可能做到這一點。

我的製表符分隔的文件是這樣的

Time [s]  Offset_Angle    observability_Analysis 
0.00E+00  0.89040261167028E+00  0.00000000000000E+00 
4.32E+02  0.21319658757004E+00  0.00000000000000E+00 
8.64E+02  0.26803683992125E+00  0.00000000000000E+00 
1.30E+03  2.67379011780784E+02  1.00000000000000E+00 
1.73E+03  2.89704767087971E+02  1.00000000000000E+00 
2.16E+03  2.93302157473406E+02  1.00000000000000E+00 

我工作的代碼如下

$ap = Import-Csv -Delimiter "`t" -Path E:\textreplace.txt 

$abc = $ap|where-Object {$_.observability_Analysis -eq "1.00000000000000E+00」}|select-object –property Offset_Angle | Foreach-Object {$_.Offset_Angle = $_.Offset_Angle -as [float] $_ } 
$abc|export-csv "E:\results.txt" 

我試圖篩選有其observability_Analysis作爲1.0000000000000E那些Offset_Angle值+00

對於第二行,它會引發錯誤,告知

cannot convert the {Offset_Angle = 2.67379011780784E+02} value of type Selected.System.Management.Automation.PSCustomObjectstring.object to [float]. 

請幫我這個。

+0

您命令應該使用一個小的修改....只需添加一個分號,如'$ _。Offset_Angle -as [float]; $ _' – Kiran

+0

@Kiran謝謝..它的工作。但對不起,這個愚蠢的錯誤 –

+0

偉大的...沒有必要感到抱歉的錯誤發生:) – Kiran

回答

0

您需要可以擴大Offset_Angle財產在Select,或在ForEach對其進行明確定位,然後轉換爲float購買使用的[float]$variable

任的下面將工作:

$ap | ? { $_.observability_Analysis -eq "1.00000000000000E+00" } | select -expand Offset_Angle | % { [float]$_ } 

$ap | ? { $_.observability_Analysis -eq "1.00000000000000E+00" } | % { [float]$_.Offset_Angle } 
相關問題