在Import-Csv cmdlet中键入科学格式的值的转换(例如:1.565656E + 02)

时间:2015-10-21 08:34:09

标签: csv powershell

我仍然是Powershell的初学者。我正在阅读从软件生成的制表符分隔文本文件,以过滤掉一组值。但生成的值都采用与IEEE浮点格式类似的格式。 (例如:1.5656565656E + 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 + 00

的Offset_Angle值

对于第二行,它会抛出错误告诉

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

请帮助我。

1 个答案:

答案 0 :(得分:0)

您需要展开{​​{1}}中的Offset_Angle属性,或者在Select中明确定位,然后转换为ForEach使用float }

以下任何一种都可以使用:

[float]$variable