gpt4 book ai didi

powershell - 在 powershell 的列中处理带有换行符的 CSV

转载 作者:行者123 更新时间:2023-12-03 16:41:13 25 4
gpt4 key购买 nike

目前,我有一个系统可以创建一个分隔文件,如下所示,我在其中模拟了偶尔出现在列中的额外换行符。

Column1,Column2,Column3,Column4

Text1,Text2[LF],text3[LF],text4[CR][LF]

Text1,Text2[LF][LF],text3,text4[CR][LF]

Text1,Text2,text3[LF][LF],text4[CR][LF]

Text1,Text2,text3[LF],text4[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')<br/>
$test.replace("(?<![\r])[\n]","")<br/>
$test | out-file .\DataOutput_2.csv

最佳答案

差不多了,我可以建议 3 处更改:

  • 使用ReadAllText(…) insteadReadAllLines(...)
  • 使用 -replace … 而不是 .Replace(…),只有这样第一个参数才会被视为 regex
  • 对替换结果做一些(例如,将其分配回 $test)

示例代码:

[STRING]$test = [io.file]::ReadAllText('C:\CONV\DataOutput.csv')
$test = $test -replace '(?<![\r])[\n]',''
$test | out-file .\DataOutput_2.csv

关于powershell - 在 powershell 的列中处理带有换行符的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com