如果行不以 : 使用 Powershell 开头,则删除换行符

Remove line break if line does not start with : with Powershell

我尝试丰富 MT940 文件。如果文件的一部分如下所示:

:86:Mitsubishi Co Ltd  
1-19, Higashi 88  
MHCBJPJTXXX  
SCN123  
:61:2202280228C211619,64NMSCSWEEP A/C 555603  

我希望它看起来像这样:

:86:Mitsubishi Co Ltd 1-19, Higashi 88 MHCBJPJTXXX SCN123  
:61:2202280228C211619,64NMSCSWEEP A/C 555603  

所以如果不是以 :

我可以删除以 : 开头的换行符

(Get-Content "filename" -Raw) -replace '\r?\n:' -split '\r?\n' | Set-Content "filename"

但如果它不是以 :.

开头,我就无法删除换行符

这应该有效:

(Get-Content path/to/file -Raw) -replace '\r?\n(?!:)', ' ' |
    Set-Content path/to/file

以提供的文本为例:

@'
:86:Mitsubishi Co Ltd
1-19, Higashi 88
MHCBJPJTXXX
SCN123
:61:2202280228C211619,64NMSCSWEEP A/C 555603
'@ -replace '\r?\n(?!:)', ' '

# Results in:
:86:Mitsubishi Co Ltd 1-19, Higashi 88 MHCBJPJTXXX SCN123
:61:2202280228C211619,64NMSCSWEEP A/C 555603

有关说明,请参阅 https://regex101.com/r/EwbqwR/1