Как написать регулярное выражение для замены только имени HOST в tnsnames.ora с помощью powershell - PullRequest
0 голосов
/ 17 июня 2020
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ora)))

Я хочу заменить имя HOST новым значением с помощью powershell, Спасибо

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Используйте оператор -replace:

$str = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ora)))'

$str -replace '(?<=\(HOST = )[^)]+', 'newhost'
1 голос
/ 17 июня 2020

здесь используется тот же оператор -replace, что и mklement0, но используется более простой шаблон для тех, кто, как я, сталкивается с вызовом регулярного выражения. [ ухмылка ]

$OldHost = 'myhost'
$NewHost = 'NewHostName'

$InStuff = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ora)))'

$OutStuff = $InStuff -replace "HOST = $OldHost", "HOST = $NewHost"

$InStuff
$OutStuff

вывод ...

(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ora)))
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = NewHostName)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ora)))
...