我试图用PowerShell替换以下字符串:
...
("
Intel(R) Network Connections 14.2.100.0
","
14.2.100.0
")
...
我使用的代码是:
Get-Content $logfilepath |
Foreach-Object { $_ -replace '`r`n`r`n', 'xx'} |
Set-Content $logfilepath_new
但我没有成功,有人能说我,错误在哪里吗?
答案 0 :(得分:3)
首先,您在替换字符串中使用单引号 -
'`r`n`r`n'
这意味着它们被逐字处理而不是换行符,因此您必须使用 -
"`r`n`r`n"
要替换,请将该文件作为字符串读取并使用Replace()
方法
$content=[string] $template= [System.IO.File]::ReadAllText("test.txt")
$content.Replace("`r`n`r`n","xx")
答案 1 :(得分:2)
Get-content返回一个行数组,因此CRLF本质上就是你的分隔符。两个背靠背的CRLF序列将被解释为currrent行的末尾,后面是一个空行,因此没有行(对象)应该包含'r`n`r`n'。多行正则表达式替换可能是更好的选择。
答案 2 :(得分:0)
作为使用PS cmdlet的替代方法:
Get-Content $logfilepath |
Foreach-Object -Begin { $content="" } -Process { $content += $_ ; $content += "xx" } -End { $content } |
Set-Content $logfilepath_new
答案 3 :(得分:0)
我使用以下代码将somestring
替换为换行符:
$nl = [System.Environment]::NewLine
$content = $content.Replace( somestring, $nl )