假设我有一个 IP 地址 123.456.789.01
我想删除最后一个八位字节 123.456.789.01 但不是句点。
所以我剩下的是 123.456.789。
感谢任何帮助。谢谢。
Linux 终端
我尝试分离最后一个八位位组,但这只给我最后一个八位位组 01
而不是 123.456.789。
:
$ address=123.456.789.01
$ oct="${address##*.}"
$ echo "$oct"
01
最佳答案
@WiktorStribiżew 的答案是正确的。
一些其他(更深奥的)技术:
因为
${address##*.}
删除了最后一个点,留下八位字节,我们可以从字符串的末尾删除 that :echo "${address%${address##*.}}" # => 123.456.789.
使用
extglob
shell 选项,我们启用 extended patterns 并可以从字符串末尾删除最长的 一个或多个 数字序列shopt -s extglob echo "${address%%+([0-9])}" # or, with a POSIX character class echo "${address%%+([[:digit:]])}"
关于bash - 如何删除终端中 ip 地址的最后一个八位字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74199977/