2017-12-08 10 views
2

私は大規模なIPループを反復しなければならず、これをPowerShellで簡単に行うことができましたが、私はそれに似たやり方をほとんど考えていません。私は次のことを行っているbashでpowershellの正規表現展開

for ip in 10.98.{7..65}.{0..255}; do 
    echo "some text and a $ip"; 
done 

しかし、PowerShellでは、私は次のことを行っている:

$ipprefix='10.98'; 
For ($i=7; $i -le 65; $i++) { 
    For ($j=0; $j -le 255; $j++) { 
     Write-Host "some text and a $ipprefix.$i.$j"; 
    } 
} 

は、PowerShellでこれを行う簡単な方法はありますか?

+0

。私は、PSのglobsが強力であるかどうか分かりませんが、私はそれがあなたがグーグルではなく、正規表現ではないと思っていると思うでしょう。 – zzxyz

答えて

4

理想的には、bashコードは2つのループを展開する必要があります。したがって、PowerShellは基本的に同じです。つまり、あなたはPowershellに2つの範囲を入れて同じようにすることができます。例えば

1..3 | % {$c = $_; 4..6 | % {$d = $_; Write-Host "a.b.$c.$d"}} 

が得られます。このことから

a.b.1.4 
a.b.1.5 
a.b.1.6 
a.b.2.4 
a.b.2.5 
a.b.2.6 
a.b.3.4 
a.b.3.5 
a.b.3.6 

、あなたは上記の問題に適応することができます。

のようにあなたが望んでいた場合は、この少しの短縮、およびいくつかの読みやすさを失うかもしれない:私はあなたが実際にbashであり使用されていることは `glob`は何だと思い

1..3 | % {$c = $_; 4..6 | % {Write-Host "a.b.$c.$_"}} 
+0

foreach($ i in 7..65){foreach($ j in 0。 .255){Write-Host "$ i。$ j"}} ' – zzxyz

+0

驚くばかり!御時間ありがとうございます。 –