每次替代匹配时替换 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
请注意,如果内存成为问题,则可能需要采用不同的方法。
我看过
我需要将 "`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
请注意,如果内存成为问题,则可能需要采用不同的方法。