我必须用不同文件中的内容替换文件中的字符串,但我需要保留换行符。原始文件在插入点之前和之后都有文本。
我正在尝试使用以下代码执行此操作:
$v_notes = Get-Content -path $cp_file_temp_rep
$file = Get-Content -path $ip_file_template |
ForEach-Object {
$line2 = $_
$line2 -replace "placenoteshere", $v_notes |
}
Set-Content -Path $op_file_replaced -value $file
可能会将$v_notes
中的行添加到$file
中,但我还是不知道如何实现这一点。
答案 0 :(得分:3)
Get-Content
默认逐行处理文件。如果文件不是很大,您可能会发现以字符串形式读取整个文件更容易,例如:
$v_notes = Get-Content $cp_file_temp_rep -raw
$file = Get-Content $ip_file_template -raw
$file = $file -replace "placenoteshere",$v_notes
$file | Out-File $ip_file_template -Encoding ascii
在将文件内容写回时使用适当的编码。 PowerShell for Out-File的默认值是Unicode。
如果您使用的是v1 / v2:
$v_notes = [IO.File]::ReadAllText($cp_file_temp_rep)
$file = [IO.File]::ReadAllText($ip_file_template)
$file = $file -replace "placenoteshere",$v_notes
$file | Out-File $ip_file_template -Encoding ascii
请注意,需要路径的.NET方法调用需要完整路径。