如何从给定的 IP 地址范围打印每个 C 类地址,并用星号替换最后一个八位字节

如何从给定的 IP 地址范围打印每个 C 类地址,并用星号替换最后一个八位字节

示例:我的范围从 10.0.100.0 到 10.0.224.0,我想要这样的输出:

10.0.100.*
10.0.101.*
10.0.102.*

等等

答案1

$ printf '%s\n' 10.0.{100..224}.\*
10.0.100.*
10.0.101.*
10.0.102.*
10.0.103.*
10.0.104.*
10.0.105.*
[...snip...]

答案2

尝试sed

$ sed -i 's/[0-9]\+$/\*/' file.txt 
10.0.100.*
10.0.101.*
10.0.102.*

编辑: 如果您想先生成范围,然后替换最后一个八位字节,请尝试以下操作:

要生成可以使用的范围echo 10.0.{100..224}.0 | tr ' ' '\n'(John1024 的答案显示了使用的另一种方法printf)。

现在将最后一个八位字节替换为*并将其保存到文件中:

$ echo 10.0.{100..224}.0 | tr ' ' '\n' | sed 's/[0-9]\+$/\*/' > output.txt

如果您只想打印输出:

$echo 10.0.{100..224}.0 | tr ' ' '\n' | sed -n 's/[0-9]\+$/\*/p'

尽管在您的情况下,我建议您*在生成范围时只制作最后一个八位字节(检查约翰1024的回答)。

相关内容