Shell指令碼分割字串

2021-10-24 14:19:45 字數 2369 閱讀 5007

以字元進行切割時:

從字串左邊開始計數

如果想從字串的左邊開始計數,那麼擷取字串的具體格式如下:

$
其中,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...