目前,我有一个系统可以创建一个分隔文件,如下所示,我在其中偶尔模拟了列中的额外换行符。
第 1 列、第 2 列、第 3 列、第 4 列
文本1,文本2[LF],文本3[LF],文本4[CR][LF]
文本1,文本2[LF][LF],文本3,文本4[CR][LF]
文本1,文本2,文本3[LF][LF],文本4[CR][LF]
文本1,文本2,文本3[LF],文本4[LF][LF][CR][LF]
通过使用 Notepad++ 并使用以下 REGEX 忽略有效的回车/换行组合,我已经能够删除引起我关注的换行:
(?<![\r])[\n]
但是,我无法使用 powershell 找到解决方案,因为我认为当我为 csv 文件获取内容时,文本字段中的换行符将被忽略,并且该值作为单独的对象存储在分配给获取内容的变量中行动。我的问题是,如果 cmdlet 在加载数据时忽略换行符,如何使用 replace 将正则表达式应用于 csv 文件?
我还尝试了以下方法来加载我的 csv 的内容,这也不起作用,因为它只会产生一个长字符串,这类似于使用 -join(get-content)。
[STRING]$test = [io.file]::ReadAllLines('C:\CONV\DataOutput.csv')
$test.replace("(?<![\r])[\n]","")
$test | out-file .\DataOutput_2.csv