Powershell分裂弦 - 一个有效,一个没有。为什么?

时间:2018-01-07 22:58:03

标签: powershell split

我在没有变量的情况下编写了这个,同时弄清楚如何去做我需要的东西:

#Variables
$replace='2.55'
$filepath= 'C:\folder\path\bond.out'
#go straight to the line I want to change something in
$data = Get-Content $filepath | select -skip 38 -first 1
#split it all, find the other variable and overwrite it
$split=$data.split("{|}")
$split[3]=$replace
#put it all back again
$join = $split -join "|"
write-output $join

这很有效。

然后我改变了" $ data"换行来改为选择变量:

#Variables
$replace='2.55'
$filepath= 'C:\folder\path\bond.out'
#find the variable
$data = Get-Content $filepath | select-string $bond
#split it all, find the other variable and overwrite it
$split=$data.split("{|}")
$split[3]=$replace
#put it all back again
$join = $split -join "|"
write-output $join

现在我收到以下错误:

enter image description here

我理解第二个错误块是因为发生了第一个错误阻止,但是不明白为什么它现在根本不起作用?

1 个答案:

答案 0 :(得分:0)

正如其他人所说,Select-String输出一个MatchInfo,而不是一个String。此外,Get-Content Select-String不需要$data = Select-String -Path $filepath -Pattern $bond | Select-Object -ExpandProperty Line 。它已经为你做到了。

试试这个:

from io import open