regex 将记录从文本文件生成为CSV文件

hjqgdpho  于 2023-02-10  发布在  其他
关注(0)|答案(3)|浏览(135)

我有IP范围列表,我需要创建一个csv文件,如下所示。

    • 输入数据**
Start IP            
192.168.100.1       
172.1.1.1
    • 预期产出**
192.168.100.1 
192.168.101.1
-----
-----
192.168.254.1

同样,对于172系列,我需要生成数据。

172.1.1.1
172.1.2.1
173.1.3.1
----
----
173.1.254.1

我不是很擅长excel。所以,我想用PowerShell生成数据。
我可以通过在脚本中定义来读取输入,也可以读取文本文件。
但是我不知道如何读取IP的第三个值并递增它。
任何人都有任何建议。可能是一些在正则表达式的支持。

foreach($line in Get-Content c:\test\ip.txt) {
    ---- Need some support here. 
}
    • 更新了问题,以便更好地理解。**
gojuced7

gojuced71#

尝试关注

$outputFilename = 'c:\temp\text.txt'
$ips = @("172.1.1.1", "173.1.254.1")
$splitArray = $ips.Split(',')
$table = @()
foreach($ip in $splitArray)
{
   $splitIP = $ip.Split('.')
   for($i = 1; $i -le 254; $i++)
   {
      $table += $splitIP[0] + '.' + $splitIP[1] + '.' + $i + '.' + $splitIP[3]
   }  
}
$table > $outputFilename
yqkkidmi

yqkkidmi2#

$InputData =  @'
Start IP
192.168.100.1
172.1.1.1
'@ -Split '\r?\n'

Foreach ($Line in $InputData) {
    $Bytes = $Line -Split '\.'
    if ($Bytes.Count -eq 4) {
        for($i = [int]$Bytes[2]; $i -le 254; $i++) {
            $Bytes[0], $Bytes[1], $i, $Bytes[3] -Join '.'
        }
    }
}
k97glaaz

k97glaaz3#

由于@iRon已经给出了一个很好的答案,我将把这个放在这里,只是为了一般的学习和未来的信息...
因为你说你不太擅长excel,这里有一个相当简单的方法,只需要一个公式就可以手动完成。如果你有很多IP地址要做,有更好的方法来完成,但是对于你最小的例子来说,它会很快完成:
如果您将IP地址的第三部分放入列中,然后使用ctrl key+向下拖动自动填充手柄将该值增加到总数(254),您就拥有了此操作所需的所有值。例如:

然后在它旁边的列中,使用以下公式将我们刚刚为您的IP地址设置的值相加:

="192.168."&A1&".1 "

接下来,复制并粘贴公式,或者双击包含公式的单元格的自动填充控点,这样您的值就会一直降到254。

最后,复制公式范围并作为值ctrl + c-〉ctrl + alt+ v-〉paste as values)粘贴到CSV输出工作表中。

对另一个IP地址重复此操作,并将输出表保存为CSV。

相关问题