每次替代匹配时替换 Powershell 中的文本

replacing text in Powershell every alternate match

我看过,和我需要做的很接近,但是我需要替换的文字不一致。

我需要将 "`r`n 替换为 ",但只替换相邻两行中的第一行

示例:(完整文件有 50k 行,最多 500 个字符宽)

    ID、姓名、关联记录
    54429,安倍,
    54247,乔纳森,"
    63460|63461"
    54249,邓丽君,
    54418,科迪,
    58046,约瑟夫,
    58243,大卫,
    ,巴里,”
    74330"
    C8876,西蒙,
    X_10934,大卫,

应该变成

    ID、姓名、关联记录
    54429,安倍,
    54247,乔纳森,"63460|63461"
    54249,邓丽君,
    54418,科迪,
    58046,约瑟夫,
    58243,大卫,
    ,巴里,"74330"
    C8876,西蒙,
    X_10934,大卫,

我知道 可能会有用,但我很难让命令按预期工作

如果 `r`n 个字符是文字​​,那么您可以执行以下操作:

[System.IO.File]::ReadAllText('c:\path\file.txt') -replace '(?<=,")`r`n\r?\n' |
    Set-Content c:\path\file.txt

如果 `r`n 是实际的回车 return 和换行符,那么您可以执行以下操作:

[System.IO.File]::ReadAllText('c:\path\file.txt') -replace '(?<=,")\r\n' | 
    Set-Content c:\path\file.txt

请注意,如果内存成为问题,则可能需要采用不同的方法。