替换文件中的CRLF

时间:2015-01-21 09:28:45

标签: powershell

我实际上是想制作一个如下所示的.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。 如果有人有想法或什么的话!

2 个答案:

答案 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