我的文字文件如下所示。
"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执行此操作。
答案 0 :(得分:0)
此方法可避免检查\r\n
是否在引号中。相反,它试图找到线路情况的“真实”结束并首先转换它们。然后它只是清除其余部分。
(Get-Content test.txt -Raw) -replace '([^,]")(\s*\r\n\s*)+("[^,])',"`$1`n`$3" -replace '\r\n',''
我认为这应该可以处理你投入的大部分内容,但如果你发现特殊情况,请告诉我。
编辑以修复替换字符串
答案 1 :(得分:0)
如果您使用的是PowerShell Community Extensions,则可以使用ConvertTo-UnixLineEnding命令,例如:
ConvertTo-UnixLineEnding C:\users\abc\desktop1.txt -dest desktop1-converted.txt -Enc ascii