sample.txt的:
$post->filter(function($value,$key){
if(\Gate::allows('view-post',$value)){
return $val;
}
});
我想将{"ip":"","port":0,"protocol":"udp","user":false,"test":false}
更改为上述字典中的特定'value'
。
例如:对于'key'
:我需要更改'port'
,对于'23'
,我需要使用Windows PowerShell更改'protocol'
等。
答案 0 :(得分:1)
您的示例数据似乎是JSON格式,因此您可以通过将JSON字符串转换为对象来修改它,更改属性,然后将对象转换回JSON字符串,如下所示:
$file = 'C:\path\to\sample.txt'
(Get-Content $file -Raw) | ConvertFrom-Json | ForEach-Object {
$_.port = 23
$_.protocol = 'tcp'
$_ # echo current object to feed it back into the pipeline
} | ConvertTo-Json -Compress | Set-Content $file
在PowerShell v2或更早版本中,您需要运行(Get-Content $file) | Out-String
来模拟v3引入的参数-Raw
。
答案 1 :(得分:1)
由于您正在使用JSON,因此我们使用JSON!
$json = Get-Content .\sample.txt | ConvertFrom-Json
$json.port = 23
$json.protocol = 'tcp'
$json | ConvertTo-Json -Compress | Out-File .\sample.txt
希望这有帮助。