PowerShell处理txt文件无法替换换行符的原因及解决方案咨询
问题根因
Get-Content命令默认按行读取文件,返回结果是字符串数组,每个元素对应原文件的一行内容,读取时已经自动移除了每行末尾的\r\n换行符,因此你在数组上执行换行符替换操作自然无法匹配到目标字符。替换普通字符能生效是因为普通字符本身就存在于数组的各个字符串元素中,替换操作会遍历数组每个元素执行替换。
解决方案
方案1:读取文件为完整字符串(推荐)
添加-Raw参数让Get-Content将整个文件内容作为单个连续字符串返回,保留所有原始换行符,此时替换操作即可正常生效:
$content = Get-Content "Test.txt" -Raw $content = $content.Replace("`r`n", " ") # 可根据需求调整-Encoding参数指定文件编码,避免乱码 $content | Out-File "Test.txt" -Encoding UTF8
方案2:直接拼接行数组
既然默认读取结果就是拆分好的行数组,直接用空格作为分隔符拼接数组即可达到同样效果,无需额外处理换行符:
$content = Get-Content "Test.txt" $content -join " " | Out-File "Test.txt" -Encoding UTF8
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

