0

我的文本文件看起来像这样。

"MikeCRLF","","","Dell","DevelCRLFCRLFoper"CRLF
"SuCRLFsan","","","Apple","ManagCRLFer"CRLF

期望的结果:

"Mike","","","Dell","Developer"LF
"Susan","","","Apple","Manager"LF

我在 PowerShell 上试​​过这个:

"C:\Users\abc\Desktop\1.txt"
(Get-Content $path -Raw).Replace("`r`n","`n") | Set-Content $path -Force

当我这样做时,我没有得到想要的结果。另外,最后我只剩下一个 CRLF。我也不想要那个。

请告诉我如何使用 PowerShell v3 执行此操作。

4

2 回答 2

0

此方法避免检查是否\r\n在引号中。相反,它会尝试找到“真正的”行尾情况并首先转换这些情况。然后它只是清除其余部分。

(Get-Content test.txt -Raw) -replace  '([^,]")(\s*\r\n\s*)+("[^,])',"`$1`n`$3" -replace '\r\n',''

我认为这应该可以处理您扔给它的大部分内容,但是如果您发现特殊情况,请告诉我。

编辑以修复替换字符串

于 2013-10-02T02:13:56.547 回答
0

如果您使用的是PowerShell Community Extensions,则可以使用 ConvertTo-UnixLineEnding 命令,例如:

ConvertTo-UnixLineEnding C:\users\abc\desktop1.txt -dest desktop1-converted.txt -Enc ascii
于 2013-10-02T02:36:57.960 回答