Powershell:使用哈希表替换字符串

2024-02-29

好的,我已经设置了一个哈希表,其中名称是要替换的内容,键是要替换的内容,如下所示:

$r = @{
    "dog" = "canine";
    "cat" = "feline";
    "eric" = "eric cartman"
}

接下来我应该做什么?我试过这个:

(Get-Content C:\scripts\test.txt) | Foreach-Object {
    foreach ( $e in $r.GetEnumerator() ) {
        $_ -replace $e.Name, $e.Value
    }
} | Set-Content C:\scripts\test.txt.out

但它根本不起作用,它只是将每一行写入三次,而不替换任何内容。

编辑:包含 test.txt:

dog
cat
eric

测试.txt.输出:

dog
dog
dog
cat
cat
cat
eric
eric
eric

这是一种方法:

$file = Get-Content C:\scripts\test.txt
foreach ($e in $r) {
  $file = $file -replace $e.Name, $e.Value
}
Set-Content -Path C:\scripts\test.txt.out -Value $file

您每行看到三次的原因是由于嵌套的 foreach 循环。文件中每一行的每个哈希表条目都运行一次替换操作。这不会更改源文件,但默认情况下它会输出替换的结果(即使没有任何更改)。

您可以通过首先将文件读入变量,然后使用循环替换来更新该变量来获得所需的功能。您也不需要为文件内容使用单独的 foreach 循环;替换可以针对每个哈希表条目一次性运行全文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell:使用哈希表替换字符串 的相关文章

随机推荐