我实际上是想制作一个如下所示的.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。 如果有人有想法或什么的话!
答案 0 :(得分:0)
事实上我做过这样的事情:
$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
它可以工作,做我想做的事。它并不完全有效,但我希望它能够快速发挥作用 当我有时间并且说它是否有效时,我会尝试所有的答案 如果我找到更有效的东西,也许我会改变我的剧本的这一部分 谢谢大家!
答案 1 :(得分:0)
我认为更简单。这将取决于文本文件的大小,因为它必须全部读入内存。然而,这将适用于" test"数据和空白区域。我将假设您的数据尚未包含逗号。
$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