假設我有一個 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
uj5u.com熱心網友回復:
@WiktorStribi?ew 有正確的答案。
其他一些(更深奧的)技術:
因為
${address##*.}洗掉到最后一個點,留下八位位元組,我們可以從字串的末尾洗掉它:echo "${address%${address##*.}}" # => 123.456.789.使用
extglobshell 選項,我們啟用擴展模式,并且可以從字串末尾洗掉一個或多個數字的最長序列shopt -s extglob echo "${address%% ([0-9])}" # or, with a POSIX character class echo "${address%% ([[:digit:]])}"
uj5u.com熱心網友回復:
使用字串操作,您不能像在正則運算式中那樣使用環視,但是您可以在洗掉點后簡單地將其放回原處,因為它是一個固定的模式部分。
您可以使用
#!/bin/bash
s='123.456.789.01'
s="${s%.*}."
echo "$s"
# => 123.456.789.
請參閱在線演示。
請注意,從字串末尾${s%.*}洗掉最短字串到第一個.。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520092.html
標籤:重击调试终端隔离
