我在没有变量的情况下编写了这个,同时弄清楚如何去做我需要的东西:
#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
现在我收到以下错误:
我理解第二个错误块是因为发生了第一个错误阻止,但是不明白为什么它现在根本不起作用?
答案 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