Linux下字符串的截取

第一種方法:利用鍵盤上#$%三個鍵之間的前後關係

${varible##*string}  從左向右截取最後一個string後的字符串

${varible#*string}  從左向右截取第一個string後的字符串

${varible%%string*}  從右向左截取最後一個string後的字符串

${varible%string*}  從右向左截取第一個string後的字符串



eg:

wKioL1domrnTwCl8AAA--lJeCYo908.png


從末尾除去特定子字符串,不必使用"*"字符串

eg:

wKiom1domuvRRK3UAAAfCYCcLwU096.png



第二種方法:${varible:start:length}截取從下標start開始的length個字符串

eg:

wKioL1domzWTKuxFAAAeSAjEwb4033.png


得到字符串長度:echo ${#varible}

eg:

wKioL1dom1bSMxQXAAARC0LGRNw501.png

或者expr length "$varible"

wKioL1dom32A2DhrAAAJhTayuVM586.png



實例:

運行之前,需要輸入命令chmod 755 mystr_cut.sh生成可執行文件

wKiom1dom6bDTA2eAABEYl-fcek226.png

${1##*.}——>$1是傳給腳本的第一個命令行自變量,$2是傳給腳本的第二個命令行自變量,以此類推




第三種方法:運用工具cut

cut命令用於從文件或標準輸入中讀取內容並截取每一行的特定部分,發送到標準輸出

截取方式:

1.按字符位置

2.按字節位置

3.使用一個分隔符將一行分割成多個field,並提取指定的fields


cut命令有5個參數(-c,-b,-f,-d,-s)

截取方式:

-c:character

-b:byte

-f:field(需用 -d 參數指定一個分隔符,分隔符只能爲單個字符)

-s:suppress,表示如果行中沒有給出的分隔符,則不輸出該行

注:默認爲如果沒有分隔符則將該行原封不動輸出

eg:

1.

    -c 實例

wKiom1dpTprw_L8yAAARyPdN2Js974.png

截取字符串中從第21到37的字符


2.

   -f 實例

wKiom1dpTs2wEF_XAAAQWcV5ewk875.png

截取以空格爲分隔符的第三部分


wKiom1dpTv2ywkHHAAASRNeTV2U402.png

截取以空格爲分隔符的第3到6部分


wKioL1dpT0aA6be6AAAQyOF_sYY090.png

截取以 , (逗號)爲分隔符的第2部分


wKioL1dpT6Tw1FaJAAAYK0zpATA231.png

截取以 , (逗號)爲分隔符的第2部分之後的字符串


wKiom1dpT8rjcVNWAAAS959NI24798.png

分隔符爲 ? ,因爲給出的字符串中沒有,所以原樣輸出


3.

   -s實例

wKioL1dpUAyTHqg_AAAR3PVMN6U495.png

字符串中沒有給出的分隔符,則不輸出。與上面第2.的第三個截圖相對比


wKiom1dpUDjgZyxyAAASFypPtqY165.png

字符串中有 " " (空格)這個分隔符,則輸出符合要求的字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章