我发现自己多次使用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 =Æ而不是æ?
答案 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 $_}