如何在Powershell中有效地执行多个替换命令

时间:2018-09-11 14:33:16

标签: powershell

我发现自己多次使用get-content命令很愚蠢,有人知道如何提高效率吗?

(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace '"', '"' | set- 
content hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'ae', 'æ' | set-content 
hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'o/', 'ø' | set-content 
hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'aa', 'å' | set-content 
hvor_har_vi_vaeret_i_aar.html

我希望我已经对此进行了充分的解释,如果您不了解某些内容,然后再写,那么我会尽力澄清。

顺便说一句,有谁知道如何使其区分大小写,例如AE =Æ而不是æ?

2 个答案:

答案 0 :(得分:1)

一次性执行替换操作,您只需使用一次Get/Set-Content

(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace '"','"' -replace 'ae','æ' -replace 'o/','ø' -replace 'aa', 'å' | Set-Content hvor_har_vi_vaeret_i_aar.html

相同,但使用反引号将命令分成多行以使其更具可读性:

(Get-Content hvor_har_vi_vaeret_i_aar.html) `
    -replace '"','"' `
    -replace 'ae','æ' `
    -replace 'o/','ø' `
    -replace 'aa', 'å' |
    Set-Content hvor_har_vi_vaeret_i_aar.html

答案 1 :(得分:0)

您可以使用另一种方法,我个人更喜欢这种方法,因为它很容易使您可以将它们作为参数传递给函数,它是声明2D数组并遍历它:

$string = 'abcdef'

$replaceArray = @(
                 @('a','1'),
                 @('b','2'),
                 @('c','3')
                )

# =============

$replaceArray | 
    ForEach-Object {
        $string = $string -replace $_[0],$_[1]
    }

Write-Output $string
  

123def

如果您只想从字符串中删除项目,则更加容易,因为您可以执行以下操作:'a','b','c' | % {$string = $string -replace $_}