在一个文件上运行两个替换

时间:2012-02-04 08:11:42

标签: powershell

我有以下代码:

    if(Test-Path $filename ) {
    # Remove quotes (")
    (get-content $filename) -replace('"','') | Out-File $filename -Force  
    $allText = [IO.File]::ReadAllText("$filename") -replace "`r`n?", "`n" 
    $encoding = New-Object System.Text.ASCIIEncoding    
    [IO.File]::WriteAllText("$filename", $allText, $encoding)
}

但我认为做两个替换是有点胡说八道。有没有办法把两者结合起来?

3 个答案:

答案 0 :(得分:2)

这对你有用吗?

if(Test-Path $filename ) {
$allText = ([IO.File]::ReadAllText("$filename") -replace "`r`n?", "`n") -replace '"','' 
$encoding = New-Object System.Text.ASCIIEncoding    
[IO.File]::WriteAllText("$filename", $allText, $encoding)

}

答案 1 :(得分:1)

您可以像这样简化脚本。阅读内容,加入“n" (so you don't need to replace it, because Powershel returns lines from Get-Content”)并替换引号:

$c = (get-content $filename) -join "`n" -replace '"',''
[IO.File]::WriteAllText($fileName, $c, [text.encoding]::ASCII)

答案 2 :(得分:1)

试试这个1班轮。

[IO.File]::WriteAllText( $filename , ([IO.File]::ReadAllText($filename) -replace "`r|""",''), [Text.Encoding]::ASCII)

正则表达式使用条形字符匹配回车符或双引号并删除它们。

Get-Content无法使用-replace替换回车符,Set-Content在文件的最后添加回车符+换行符,因此坚持使用{{1} }}