如何使用 Linux seq 命令打印一系列 IP 地址

use*_*714 8 linux command-line bash

如何使用“seq”命令在linux命令行上打印一系列ip地址?例如:我需要 seq 来打印从 10.0.0.1 到 10.0.0.23 的 ip 范围。似乎八位字节之间的句点导致数字表现得像一个浮点数。我收到“无效的浮点参数错误”。我尝试使用 -f 选项。可能是我没有正确使用它。但它仍然给了我一个错误。我正在尝试类似的东西

seq 10.0.0.2 10.0.0.23
Run Code Online (Sandbox Code Playgroud)

除了切换到 excel 之外,还有其他方法可以在 Linux 中打印某个范围内的 IP 地址吗?

Mic*_*ton 23

使用格式:

$ seq -f "10.20.30.%g" 40 50
10.20.30.40
10.20.30.41
10.20.30.42
10.20.30.43
10.20.30.44
10.20.30.45
10.20.30.46
10.20.30.47
10.20.30.48
10.20.30.49
10.20.30.50
Run Code Online (Sandbox Code Playgroud)

不幸的是,这并不明显,因为 GNU 不喜欢编写手册页。

  • 我认为最好参考他们提供的手册,而不是只注意到 * 手册页 * 特别是过于简短。参见 [`info coreutils 'seq invocation'`](http://www.gnu.org/software/coreutils/manual/coreutils.html#seq-invocation)。 (2认同)
  • 当然,如果读者不熟悉 printf 格式字符串,参考 `man 3 printf` 也是一个好主意。也就是说,我也不是他们使用 texinfo 的忠实粉丝,但这只是我的建议,通过使用确实存在的文档而不是仅仅指出缺乏特定格式的文档来改进您的答案。 (2认同)

小智 12

有从范围或 CIDR 生成 IP 列表的prips实用程序。适用于大范围的工作:

$ prips 10.0.0.20 10.0.0.23
10.0.0.20
10.0.0.21
10.0.0.22
10.0.0.23

$ prips 10.0.0.0/23
10.0.0.0
10.0.0.1
10.0.0.2
<...>
10.0.1.254
10.0.1.255
Run Code Online (Sandbox Code Playgroud)


Vai*_*and 8

您可以使用 sed 命令和 seq 来打印 IP 地址范围。

seq 2 23 | sed 's/^/10.0.0./'
Run Code Online (Sandbox Code Playgroud)

或使用 echo 和 tr

echo 10.0.0.{2..23} | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)