示例:我的范围从 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的回答)。