Редактировать существующий контент с PowerShell

0

Я знаю, что это глупый вопрос Google, но я не нашел что-то действительно простое для моих нужд

У меня есть файл .txt со следующим содержанием:

hostname [ip] 
exec /bin/bash

Теперь каждый раз, когда я выполняю определенный сценарий PS (из RUN), я хочу, чтобы [ip] менялся в соответствии с моими $ args [0]

Например:

.текст сейчас:

hostname 1.1.1.1 
exec /bin/bash

Я выполняю из бега script 2.2.2.2

.txt ожидается:

hostname 2.2.2.2
exec /bin/bash

Заметка! Весь контент будет всегда одинаковым, меняются только [ip].

Я ищу самое простое решение для замены, спасибо :)

igor
источник

Ответы:

1

Ваш вопрос довольно широкий, и я не хочу писать целый сценарий, поэтому я просто отвечу на основную его часть.

Чтобы заменить «[ip]» в файле на «1.1.1.1»:

gc input_file.txt | % { $_ -replace '\[ip\]', '1.1.1.1' } | sc output_file.txt

Если вы хотите перезаписать исходный файл, вам нужно поместить круглые скобки вокруг первого оператора, чтобы он загружал весь файл в память в начале:

(gc my_file.txt) | % { $_ -replace '\[ip\]', '1.1.1.1' } | sc my_file.txt

gc коротка для Get-Content, sc является Set-Content, а также % является ForEach-Object,

dangph
источник