以字元進行切割時:
從字串左邊開始計數
如果想從字串的左邊開始計數,那麼擷取字串的具體格式如下:
$
其中,string 是要擷取的字串,start 是起始位置(從左邊開始,從 0 開始計數),length 是要擷取的長度(省略的話表示直到字串的末尾)。
url=
"c.biancheng.net"
echo $
結果為biancheng
url=
"c.biancheng.net"
echo $
#省略 length,擷取到字串末尾
結果為biancheng.net
從右邊開始計數
如果想從字串的右邊開始計數,那麼擷取字串的具體格式如下:
$
同第 1) 種格式相比,第 2) 種格式僅僅多了0-,這是固定的寫法,專門用來表示從字串右邊開始計數
這裡需要強調兩點:
**·**從左邊開始計數時,起始數字是 0(這符合程式設計師思維);從右邊開始計數時,起始數字是 1(這符合常人思維)。計數方向不同,起始數字也不同。
**·**不管從哪邊開始計數,擷取方向都是從左到右。
url=
"c.biancheng.net"
echo $
結果為biancheng。從右邊數,b是第 13 個字元
這種擷取方式無法指定字串長度,只能從指定字元(子字串)擷取到字串末尾。shell 可以擷取指定字元(子字串)右邊的所有字元,也可以擷取左邊的所有字元。
使用 # 號擷取右邊字元
使用#號可以擷取指定字元(或者子字串)右邊的所有字元,具體格式如下:
$
其中,string 表示要擷取的字元,chars 是指定的字元(或者子字串),*是萬用字元的一種,表示任意長度的字串。*chars連起來使用的意思是:忽略左邊的所有字元,直到遇見 chars(chars 不會被擷取)。
url=
""echo $
結果為
以下寫法也可以得到同樣的結果:
echo $
echo $
如果不需要忽略 chars 左邊的字元,那麼也可以不寫*,例如:
url=
""echo $
結果為 c.biancheng.net/index.html
注意,以上寫法遇到第乙個匹配的字元(子字串)就結束了。例如:
url=
""echo $
結果為 /c.biancheng.net/index.html。url 字串中有三個/,輸出結果表明,shell 遇到第乙個/就匹配結束了。
如果希望直到最後乙個指定字元(子字串)再匹配結束,那麼可以使用##,具體格式為:
$
請看下面的例子:
#!/bin/bash
url=
""echo $ #結果為 /c.biancheng.net/index.html
echo $ #結果為 index.html
str=
"---aa+++aa@@@"
echo $ #結果為 +++aa@@@
echo $ #結果為 @@@
使用 % 擷取左邊字元
使用%號可以擷取指定字元(或者子字串)左邊的所有字元,具體格式如下:
$
請注意的位置,因為要擷取 chars 左邊的字元,而忽略 chars 右邊的字元,所以應該位於 chars 的右側。其他方面%和#的用法相同,這裡不再贅述,僅舉例說明:
#!/bin/bash
url=
""echo $
#結果為
echo $
#結果為 http:
str=
"---aa+++aa@@@"
echo $
#結果為 ---aa+++
echo $
#結果為 ---
ip=`ifconfig -a|grep inet|grep -v 127.0
.0.1
|grep -v inet6|awk ''
|tr -d "addr:"`
echo $ip
m=`echo $ip | awk ''`
echo $m
Shell指令碼實現簡單分割字串
這篇文章主要介紹了shell指令碼實現簡單分割字串,本文講解使用cut命令實現以逗號 分號或其它分隔符來切割字串,需要的朋友可以參考下 我們有這樣乙個字串 複製 如下 info abcd efgh 現在想獲取abcd和efgh,我們可以簡單地用cut工具來獲取 複製 如下 fstr echo inf...
Shell 字串分割
a hello,world,test 1 使用awk分割字串,取出其中一部分 這可能是最容易想到的,同時也是awk最常見的應用之一。echo a awk f awk的 f開關指定分隔符,多個分隔符應當寫在中。2 使用ifs將字串分割為陣列 要將 a分割開,可以這樣 old ifs ifs ifs a...
shell 字串分割與連線
your id on echo your id your id printf s s s user on hostname echo your id 2.shell實現建立前一天時間的目錄 1 aaa date y m d date 1 days ago 2 bbb mkdir aaa 3 bbb4...