Как заменить текущее содержимое файла?

В обычном gulpfile.js на 63-й строке мне нужно заменить 'main' на 'grum'. Я выполнил следующие команды: <br/> <pre><code class="actionscript">( gc -Path "grum\gulpfile.js" ) | 
    % { $_ -Replace 'main', 'grum' } | 
Set-Content -Path "grum\gulpfile.js"</code></pre> <br/> …что сработало. Если мне понадобится заменить два слова, я добавлю ещё один оператор %. Однако, если файл будет содержать 630 и более строк, и если нужно будет заменить несколько слов, то добавление соответствующего количества операторов % будет неудобным. Существует ли способ сделать эту запись более короткой в PowerShell, когда требуется заменить одно или два слова, а также ждать несколько десятков?
  • 1 октября 2024 г. 21:44
Ответы на вопрос 2
Да, в PowerShell можно сделать замену слов более удобной и краткой, используя хеш-таблицы или массивы. Это упростит замену нескольких слов. Ниже приведен пример, как это можно реализовать:

```powershell
# Задаем хеш-таблицу замен
$replacements = @{
    'main' = 'grum'
    # Добавьте здесь другие замены, например:
    'oldWord' = 'newWord'
    'anotherOldWord' = 'anotherNewWord'
}

# Читаем содержимое файла, выполняем все замены и записываем обратно
(Get-Content -Path "grum\gulpfile.js") | 
    ForEach-Object {
        $line = $_
        foreach ($pair in $replacements.GetEnumerator()) {
            $line = $line -Replace [regex]::Escape($pair.Key), $pair.Value
        }
        $line
    } | Set-Content -Path "grum\gulpfile.js"
```

В этом примере мы создаем хеш-таблицу `$replacements`, где ключами являются слова, которые вы хотите заменить, а значениями — слова на которые их нужно заменить. Затем мы читаем файл и для каждой строки выполняем замену по всем парам из хеш-таблицы.

Таким образом, вы можете легко добавлять или удалять пары замен, не увеличивая сложность кода. Если вам нужно будет заменить много слов, просто добавьте новые пары ключ-значение в хеш-таблицу `$replacements`.

Может такой вариант тебе подойдёт?
Похожие вопросы