如何用PowerShell替换文本中嵌入的Unix风格LF换行符
用PowerShell修复指定位置的LF换行问题
核心问题在于你之前大概率是按行读取文件的,导致跨“拆分行”的LF+固定字符模式根本无法匹配到。解决的关键是一次性读取整个文件内容,然后精准替换掉“LF+固定字符”的组合。
具体操作步骤
- 必须用
Get-Content -Raw读取文件(绝对不能省略-Raw参数,否则内容会被按行拆分,替换操作完全失效) - 匹配
LF+你提到的固定字符的组合,仅移除LF,保留固定字符
基础命令示例
假设要消除的LF后面固定跟着_TARGET_(替换成你实际的固定字符即可):
# 读取源文件、替换指定模式、输出到修复后的文件 (Get-Content -Raw "C:\你的源文件路径.txt") -replace "`n_TARGET_", "_TARGET_" | Set-Content "C:\修复后文件路径.txt" -Encoding UTF8
处理含正则特殊字符的固定字符串
如果你的固定字符里包含正则元字符(比如.、*、(这类),需要先转义再执行替换:
# 定义你的固定字符 $fixedStr = "Detail(789)." # 自动转义正则特殊字符 $escapedStr = [regex]::Escape($fixedStr) # 执行修复操作 (Get-Content -Raw "source.txt") -replace "`n$escapedStr", $fixedStr | Set-Content "fixed.txt" -Encoding UTF8
验证修复结果
用Notepad++打开修复后的文件,开启“显示所有字符”(视图→显示符号→显示所有字符),检查原本被拆分的行是否已经合并为完整结构。
内容的提问来源于stack exchange,提问作者tim_harkin
相关产品推荐
相关产品推荐

