替换文件中的 CRLF
Replace CRLF in file
我实际上正在尝试制作一个如下所示的 .txt 文件:
text1
text 2
text3
text4
像这样:
text1,text2
text3,text4
我尝试了很多东西,比如:
foreach($line in $file){
$line=$line -replace'`r`n', ','
}
或者直接在文件中替换而不是字符串:
$file=Get-Content('testo.txt')
$file=$file -replace '`r`n',''
但没有任何效果。我从来没有能够取代 CRLF。
如果有人有想法或任何东西!
事实上我做过这样的事情:
$Writer = New-Object IO.StreamWriter "$($PWD.Path)$OutputFile"
$Writer.Write( [String]::Join(".", $data) )
$Writer.Close()
$data=get-content temp.txt
$data=$data -replace '[@]{2,}',"`r`n"
$data=$data -replace '[@]',","
$data=$data -replace '( ){1,},',"no data"
$data>>temp1.txt
它能正常工作,做我想做的事。它效率不高,但我希望它能快速运行。
有时间我会尝试所有的答案,然后再说行不行。
如果我发现更有效的方法,也许我会更改脚本的这一部分。
感谢大家!
我认为更简单的东西。这将取决于文本文件的大小,因为它必须全部读入内存。然而,这将适用于 "test" 数据和白色 space 的可变行。我将假设您的数据不包含逗号。
$file = (Get-Content "c:\temp\data.txt") -join "," -replace ",{2,}","`r`n"
Set-Content -Path "C:\temp\Newfile.txt" -Value $file
获取文件并将其转换为逗号分隔的字符串。将会发生的是您会看到一系列逗号组。使用您的测试数据
text1,text 2,,,text3,text4
我们使用正则表达式将 2 个或更多的连续逗号组替换为换行符。获得所需的输出。
text1,text 2
text3,text4
我实际上正在尝试制作一个如下所示的 .txt 文件:
text1
text 2
text3
text4
像这样:
text1,text2
text3,text4
我尝试了很多东西,比如:
foreach($line in $file){
$line=$line -replace'`r`n', ','
}
或者直接在文件中替换而不是字符串:
$file=Get-Content('testo.txt')
$file=$file -replace '`r`n',''
但没有任何效果。我从来没有能够取代 CRLF。 如果有人有想法或任何东西!
事实上我做过这样的事情:
$Writer = New-Object IO.StreamWriter "$($PWD.Path)$OutputFile"
$Writer.Write( [String]::Join(".", $data) )
$Writer.Close()
$data=get-content temp.txt
$data=$data -replace '[@]{2,}',"`r`n"
$data=$data -replace '[@]',","
$data=$data -replace '( ){1,},',"no data"
$data>>temp1.txt
它能正常工作,做我想做的事。它效率不高,但我希望它能快速运行。
有时间我会尝试所有的答案,然后再说行不行。
如果我发现更有效的方法,也许我会更改脚本的这一部分。
感谢大家!
我认为更简单的东西。这将取决于文本文件的大小,因为它必须全部读入内存。然而,这将适用于 "test" 数据和白色 space 的可变行。我将假设您的数据不包含逗号。
$file = (Get-Content "c:\temp\data.txt") -join "," -replace ",{2,}","`r`n"
Set-Content -Path "C:\temp\Newfile.txt" -Value $file
获取文件并将其转换为逗号分隔的字符串。将会发生的是您会看到一系列逗号组。使用您的测试数据
text1,text 2,,,text3,text4
我们使用正则表达式将 2 个或更多的连续逗号组替换为换行符。获得所需的输出。
text1,text 2
text3,text4