joe*_*g07 2 windows powershell scripting json
我使用以下语法从JSON文件中提取IP列表
$Request = 'https://url-to-json.com/file.json'
$AWSIPs = Invoke-WebRequest $Request | ConvertFrom-Json | Select-Object prefix -ExpandProperty prefixes -ExcludeProperty ("/.*") | Where-Object -Property "service" -EQ "service_name" | select ip_prefix
foreach ($awsip in $AWSIPs){
echo $awsip
}
Run Code Online (Sandbox Code Playgroud)
这将以这种方式返回IP列表: - 0.0.0.0/00
我需要使用这个IP列表,但是在我能够这样做之前我需要在结尾处删除/ 00(显然不是00但它是子网掩码,这很少相同).
我非常感谢这方面的帮助.
谢谢.
-replace基于A 的解决方案:
$ips = '0.0.0.0/00',
'0.0.0.1/01',
'0.0.0.2/02',
'0.0.0.3/03',
'0.0.0.4/04'
$ips -replace '(.*)/.*', '$1'
Run Code Online (Sandbox Code Playgroud)
请注意如何直接使用数组作为-replace操作的LHS .
以上产量:
0.0.0.0
0.0.0.1
0.0.0.2
0.0.0.3
0.0.0.4
Run Code Online (Sandbox Code Playgroud)
-split 也是一个选项,但为了避免额外的复杂性,您需要一个显式循环:
foreach ($ip in $ips) {
($ip -split '/')[0]
}
Run Code Online (Sandbox Code Playgroud)
这是可能避免外在的循环,但是这可能不值得做-针对性能和可读性的原因; 它确实显示了PowerShell的灵活性,但是:
($ips -split '/')[(0..($ips.Count-1)).ForEach({ $_ * 2 })]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |