在powershell中使用匹配模式替换数据

在powershell中使用匹配模式替换数据,powershell,pattern-matching,powershell-2.0,Powershell,Pattern Matching,Powershell 2.0,我的目标是得到如下输出 $Gateway = "192.168.122.1" $Ip = "172.18.66.34" $IP的前3个八位字节和$Gateway的第4个八位字节…两者的组合 我在下面试过了,但没有任何其他逻辑来实现这一点 172.18.66.1 $Gateway-match“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?) $fourth=$matches['content'] $mgmt=“172.18.47.19” $mgmt-匹配“\d{1,3}\.\d{1

我的目标是得到如下输出

$Gateway = "192.168.122.1"
$Ip = "172.18.66.34"
$IP的前3个八位字节和$Gateway的第4个八位字节…两者的组合

我在下面试过了,但没有任何其他逻辑来实现这一点

172.18.66.1
$Gateway-match“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?)
$fourth=$matches['content']
$mgmt=“172.18.47.19”
$mgmt-匹配“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?*)”
$new=$matches['content']
$mgmt.更换($new,$FIRST)

您忘记在“内容”类别中填写模式

试试这个:

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>)"
$fourth = $matches['content']
$mgmt = "172.18.47.19"
$mgmt -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>.*)"
$new = $matches['content']
$mgmt.replace($new,$fourth)
$Gateway-匹配“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?\d{1,3})”

您忘记在“内容”类别中填写模式

试试这个:

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>)"
$fourth = $matches['content']
$mgmt = "172.18.47.19"
$mgmt -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>.*)"
$new = $matches['content']
$mgmt.replace($new,$fourth)
$Gateway-匹配“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?\d{1,3})”

您忘记在“内容”类别中填写模式

试试这个:

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>)"
$fourth = $matches['content']
$mgmt = "172.18.47.19"
$mgmt -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>.*)"
$new = $matches['content']
$mgmt.replace($new,$fourth)
$Gateway-匹配“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?\d{1,3})”

您忘记在“内容”类别中填写模式

试试这个:

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>)"
$fourth = $matches['content']
$mgmt = "172.18.47.19"
$mgmt -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>.*)"
$new = $matches['content']
$mgmt.replace($new,$fourth)
$Gateway-匹配“\d{1,3}\.\d{1,3}\.\d{1,3}\.(?\d{1,3})”

可能很原始,但可以完成任务

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>\d{1,3})"
在powershell 2上工作


这就是你的意思吗?

可能很原始,但这工作做得好吗

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>\d{1,3})"
在powershell 2上工作


这就是你的意思吗?

可能很原始,但这工作做得好吗

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>\d{1,3})"
在powershell 2上工作


这就是你的意思吗?

可能很原始,但这工作做得好吗

$Gateway -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.(?<content>\d{1,3})"
在powershell 2上工作


这就是你的意思吗?

我知道它不是regex,但这是向你介绍类型
[ipaddress]

($Ip -split "\.")[0],($Ip -split "\.")[1],($Ip -split "\.")[2],($Gateway -split "\.")[-1] -join "."

172.18.66.1

我们使用方法
.GetAddressBytes()
来分解八位字节,然后使用数组表示法、串联和简单的
-join
将地址改为您的标准地址。

我知道它不是正则表达式,但这是向您介绍类型
[ipaddress]

($Ip -split "\.")[0],($Ip -split "\.")[1],($Ip -split "\.")[2],($Gateway -split "\.")[-1] -join "."

172.18.66.1

我们使用方法
.GetAddressBytes()
来分解八位字节,然后使用数组表示法、串联和简单的
-join
将地址改为您的标准地址。

我知道它不是正则表达式,但这是向您介绍类型
[ipaddress]

($Ip -split "\.")[0],($Ip -split "\.")[1],($Ip -split "\.")[2],($Gateway -split "\.")[-1] -join "."

172.18.66.1

我们使用方法
.GetAddressBytes()
来分解八位字节,然后使用数组表示法、串联和简单的
-join
将地址改为您的标准地址。

我知道它不是正则表达式,但这是向您介绍类型
[ipaddress]

($Ip -split "\.")[0],($Ip -split "\.")[1],($Ip -split "\.")[2],($Gateway -split "\.")[-1] -join "."

172.18.66.1

我们使用方法
.GetAddressBytes()
来分解八位字节,然后只使用数组表示法、串联和简单的
-join
将地址改为您的标准地址。

$IP
从未使用过。示例应该只包括必要的代码。一行代码..$Ip.Split('.')| select-Index(0..2)|和{$ofs='.';“$input”}| select@{name=“ModifiedIp”;expression={$\+'+$Gateway.Split('.')[3]}。我正在使用powershell 2.0。。。。我们不能使用分割法…:(
$IP
从未使用过。示例应该只包含必要的代码。一行代码..$IP.Split('.')选择-索引(0..2)|和{$ofs='.';“$input”}选择@{name=“ModifiedIp”;表达式={$\+'+$Gateway.Split('.[3]}我正在使用powershell 2.0…,我们不能使用Split方法…:(
$IP
从未使用过。示例应该只包含必要的代码。一行代码..$IP.Split('.')选择-索引(0..2)|和{$ofs='.';“$input”}选择@{name=“ModifiedIp”;表达式={$\+'+$Gateway.Split('.[3]}我正在使用powershell 2.0…,我们不能使用Split方法…:(
$IP
从未使用过。示例应该只包含必要的代码。一行代码..$IP.Split('.')选择-索引(0..2)|和{$ofs='.';“$input”}选择@{name=“ModifiedIp”;表达式={$\+'+$Gateway.Split('.[3]}我正在使用powershell 2.0…,我们不能使用Split方法…:(