将IP地址字符串转换为十六进制格式的Bash脚本

10

IP_ADDR=192.168.1.128

打印出${IP_ADDR//./ }的16进制格式即可,其中//表示将所有"."替换为空格。

有人能解释一下这个简单的一行代码是如何将IP_ADDR转换成十六进制格式的吗?我正在苦苦寻找相关的文档说明。

2个回答

11

Shell参数扩展

$ IP_ADDR=192.168.1.128
$ echo ${IP_ADDR//./ }
192 168 1 128
$ printf '%02X' 192 168 1 128 ; echo
C0A80180

@Ignacio 这个有反向函数吗? - Ganesh Satpute
4
这将会把它反转过来:printf '%d.%d.%d.%d\n' \echo 4A3EBA33 | sed -r 's/(..)/0x\1 /g'``每两个数字被转换成"0xN ",其中N是这两个数字。然后printf将每个十六进制值转换为一个十进制数,并在它们之间放置一个'.'。 - Andre S.

3
您可以使用gethostip命令(在Debian / Ubuntu上的syslinux-utils软件包中):
$ gethostip -x 192.168.1.128
C0A80180

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接