Bash
如何從給定範圍的 ip 地址列印每個 c 類,最後一個八位字節被星號替換
範例:我的範圍從 10.0.100.0 到 10.0.224.0,我想要這樣的輸出:
10.0.100.* 10.0.101.* 10.0.102.*
等等
$ 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...]
嘗試
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'
儘管在您的情況下,我建議您
*
在生成範圍時只製作最後一個八位字節(檢查John1024 的答案)。