Bash

如何從給定範圍的 ip 地址列印每個 c 類,最後一個八位字節被星號替換

  • March 23, 2015

範例:我的範圍從 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 的答案)。

引用自:https://unix.stackexchange.com/questions/192050