如何删除终端中 IP 地址的最后一个八位字节?

Jon*_*ayo 2 debugging bash terminal isolation

假设我的 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
Run Code Online (Sandbox Code Playgroud)

gle*_*man 5

@WiktorStribi\xc5\xbcew 有正确的答案。

\n

其他一些(更深奥的)技术:

\n
    \n
  • 由于${address##*.}删除了最后一个点,留下了八位字节,我们可以从字符串的末尾删除它:

    \n
    echo "${address%${address##*.}}"    # => 123.456.789.\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 使用extglobshell 选项,我们启用扩展模式,并可以从字符串末尾删除最长的一个或多个数字序列

    \n
    shopt -s extglob\necho "${address%%+([0-9])}"\n# or, with a POSIX character class\necho "${address%%+([[:digit:]])}"\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n