Powershell脚本用不同的文本文件替换字符串,保留换行符

时间:2014-01-28 16:29:14

标签: file powershell replace

我必须用不同文件中的内容替换文件中的字符串,但我需要保留换行符。原始文件在插入点之前和之后都有文本。

我正在尝试使用以下代码执行此操作:

$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中,但我还是不知道如何实现这一点。

1 个答案:

答案 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方法调用需要完整路径。