我仍然是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].
请帮助我。
答案 0 :(得分:0)
您需要展开{{1}}中的Offset_Angle
属性,或者在Select
中明确定位,然后转换为ForEach
使用float
}
以下任何一种都可以使用:
[float]$variable