shell腳本:字符串的截取

 

在shell腳本中我們所有變量的存儲形式都是字符串。所以對於字符串的截取來說就變得十分重要了。 


而在shell腳本中,如果想要對一個字符串進行指定的截取,有多種方法可以來完成:
如下舉例均用:STR="hello world my dear sister"

${STR#*char} 表示從左開始刪除第一個char左邊的所有字符,截取右邊的字符串

#!/bin/bash

STR="hello world my dear sister"
echo ${STR}

CUT=${STR#* }
echo ${CUT}

結果:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/82/F0/wKioL1dmS-ezNpMnAAAZWU88Fpk887.png" title="QQ圖片20160619153402.png" alt="wKioL1dmS-ezNpMnAAAZWU88Fpk887.png" />



${STR##*char} 表示從左開始刪除最後一個char左邊的所有字符,截取右邊的字符串
將上例程序改爲:

CUT=${STR##*/}

結果:

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/82/F1/wKiom1dmTF_iZxC0AAAVTdZp2JI417.png" title="QQ圖片20160619153937.png" alt="wKiom1dmTF_iZxC0AAAVTdZp2JI417.png" />


${STR%char*} 表示從右開始刪除第一個char右邊的所有字符,截取左邊的字符串

將上例程序改爲:

CUT=${STR%/*}


同樣*可以看做是通配符,表示匹配右邊所有的字符刪除,保留左邊;

結果:
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="border:1px solid rgb(221,221,221);background-image:url("/e/u261/lang/zh-cn/images/localimage.png");background-position:50% 50%;background-repeat:no-repeat;" alt="spacer.gif" />650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/F0/wKioL1dmTMiRyGdQAAAZA8cwvoY250.png" title="QQ圖片20160619154145.png" alt="wKioL1dmTMiRyGdQAAAZA8cwvoY250.png" />


${STR%char*} 表示從右開始刪除最後一個char右邊的所有字符,截取左邊的字符串

將上例程序改爲如下:

CUT=${STR%%/*}[object Object]

結果:

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/82/F0/wKioL1dmTR3Cg3RyAAAVHfKsIDg654.png" title="QQ圖片20160619154308.png" alt="wKioL1dmTR3Cg3RyAAAVHfKsIDg654.png" />


${STR:N:M}  表示從左邊第N個字符開始截取M個字符,不包括第N個字符
將上例程序改爲:

CUT=${STR:3:8}

表示從左邊第3個字符開始截取後面的8個字符;如果N爲0表示從第一個字符開始,但是包括第一個字符;

結果:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/F1/wKiom1dmTXqwC4qJAAATpKZ27n4831.png" title="QQ圖片20160619154441.png" alt="wKiom1dmTXqwC4qJAAATpKZ27n4831.png" />



${STR:N}  表示從左邊第N個字符開始截取後面所有的字符,不包括第N個字符

將上面程序改爲如下:

CUT=${STR:7}

表示從左邊第7個字符開始取後面的所有字符;

結果:

650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/F1/wKiom1dmTdmRdm7TAAAVjpHDBwQ929.png" title="QQ圖片20160619154612.png" alt="wKiom1dmTdmRdm7TAAAVjpHDBwQ929.png" />



${STR:0-N:M}  表示從右邊第N個字符開始截取M個字符,包括第N個字符


將上例程序改爲:

CUT=${STR:0-7:3}


表示從右邊開始數第7個字符開始,包括第七個字符本身,截取三個字符;

結果:

空格在行首的同時不輸出。其他字符是輸出的,大家可以下去試一試是否包含他本身

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/F0/wKioL1dmTtDACcCrAAATGBxEgtg698.png" title="QQ圖片20160619155006.png" alt="wKioL1dmTtDACcCrAAATGBxEgtg698.png" />



${STR:0-N}  表示從右邊第N個字符開始截取後面的所有字符,包括第N個字符

將上例程序改爲:

CUT=${STR:0-7}

表示從右邊開始數第7個字符開始截取後面的所有字符;

結果:

空格不輸出。其他字符是輸出的,大家可以下去試一試是否包含他本身


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/82/F0/wKioL1dmT5WyDevfAAAWFhTuiqY420.png" title="QQ圖片20160619155329.png" alt="wKioL1dmT5WyDevfAAAWFhTuiqY420.png" />


${STR} | cut -c N  表示取從左邊開始數的第N個字符

示例代碼:

#!/bin/bash

STR="hello world my dear sister"
echo ${STR}

echo ${STR} | cut -c 7

表示截取從左邊數第7個字符;

結果:
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/82/F1/wKiom1dmUemAxEd9AAAUWK7UDpU199.png" title="QQ圖片20160619155727.png" alt="wKiom1dmUemAxEd9AAAUWK7UDpU199.png" />




${STR} | cut -c N-  表示截取從左邊開始數的第N個字符往後的所有字符,包括第N個

更改如上程序:

echo ${STR} | cut -c 7-

表示從截取從左邊第7個字符開始剩下的所有字符;

結果:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/82/F1/wKiom1dmUiyTRqPcAAAb45YoQKw222.png" title="QQ圖片20160619160442.png" alt="wKiom1dmUiyTRqPcAAAb45YoQKw222.png" />



${STR} | cut -c N-M  表示截取從左邊開始數的第N個字符到第M個字符之間的所有字符,包括第N個字符,但是不包括第M個字符

將程序改爲如下:

echo ${STR} | cut -c 2-7


表示截取從左邊第2個字符到第7個字符之間的所有字符,包括第2個字符,不包括第7個字符;

結果:

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/F0/wKioL1dmUnbCH5X9AAAUPG0d5sA775.png" title="QQ圖片20160619160559.png" alt="wKioL1dmUnbCH5X9AAAUPG0d5sA775.png" />



${STR} | cut -c -N  表示截取從左邊開始數的第N個字符往前的所有字符,包括第N個字符

將程序改爲如下:

echo ${STR} | cut -c -7


表示從左邊第7個字符開始數刪除後面所有的字符,截取前面的字符;

結果:

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/F0/wKioL1dmUsjBSJkaAAAT6DAlDz4228.png" title="QQ圖片20160619160721.png" alt="wKioL1dmUsjBSJkaAAAT6DAlDz4228.png" />

expr substr "${STR}" N M  表示從左邊第N個字符開始往後截取M個字符

示例程序:

#!/bin/bash

STR="hello world my dear sister"
echo ${STR}

CUT=$(expr substr "${STR}" 3 5)
echo $CUT


因爲expr是命令,所以上面的$()爲命令替換,表示截取從左邊第3個字符開始往後截取5個字符;

結果:

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/82/F1/wKiom1dmU7zDlaaTAAAUTT9T9Bo852.png" title="QQ圖片20160619161122.png" alt="wKiom1dmU7zDlaaTAAAUTT9T9Bo852.png" />



本文出自 “剩蛋君” 博客,請務必保留此出處http://memory73.blog.51cto.com/10530560/1790807

發佈了101 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章