shell不得不知的“內建字串處理”
總結了shell中內建的字串處理功能,包括
> ${} # % :- :+ ?
等的使用
使用內建操作符處理字串時,效能較好
賦值處理
${string-word}
: 如果string沒設定,則使用word作為返回值(空值和非空值不做處理)${string:-word}
: 如果string沒設定或為空值,則使用word作為返回值(非空值時不做處理) 經常使用${string+word}
: 如果string設定了(空值或非空值),則使用word作為返回值(沒有設定不做處理)${string:+word}
: 如果string為非空值,則使用word作為返回值(沒設定或空值時不做處理)${string=word}
: 如果string沒設定,則使用word作為返回值,同時將word值賦值給string${string:=word}
: 如果string沒設定或為空值,則使用word作為返回值,同時將word複製給string${string?word}
: 如果string沒有設定,則將word輸出到STDERR(空值及非空值不做處理)${string:?word}
: 如果string沒設定或為空值,則將word輸出到STDERR(非空值不做處理)
獲取字串長度
${#string}
(#
號也稱為為number sign )
字串刪除
設定string='http://www.codeshold.me/2016/11/mac_skills.html'
1. ${string#*/}
: 刪掉第一個/
及其左邊的字串,返回:/www.codeshold.me/2016/11/mac_skills.html
2. ${string##*/}
: 刪掉最後一個/
及其左邊的字串, 返回mac_skills.html
3. ${string%/*
} : 刪掉最後一個/
及其右邊的字串,返回http://www.codeshold.me/2016/11
4. ${string%%/*}
: 刪除第一個/
及其右邊的字串,返回http:
5. 類似的有${string#*.}
刪掉第一個.
及其左邊的字串,${string%.*}
刪掉最後一個.
及其右邊的字串
記憶方法:
#
表示從左往右匹配(鍵盤上#
在$
的左邊)
%
表示從右往左匹配(鍵盤上%
在$
的右邊)
單一符號是最小匹配(非貪婪);兩個符號是最大匹配(貪婪匹配)
${變數名#substring正規表示式}
從字串開頭開始配備substring,刪除匹配上的表示式
${變數名%substring正規表示式}
從字串結尾開始配備substring,刪除匹配上的表示式
字串擷取
設定string=abcdefg
,字串的下標從0開始
1. ${string:2}
: 返回string中從第3個到結束的所有字元,即cdefg
2. ${string:0}
: 返回string中從第1個到結束的所有字元,即abcdefg
3. ${string:0:5}
: 返回string中從第1個開始的5個字元,即abcde
4. ${string:0-1}
: 返回string中最後一個字元, 即g
4. ${string:0-3}
: 返回string中從倒數第3個字元到結束的所有字元, 即efg
5. ${string:0-3:2}
: 返回string中從倒數第3個字元開始的2個字元,即ef
記憶方法:
${string:開始:長度}
字串替換
設定string=/dir1/dir2/dir3
1. ${string/dir/swf}
: 將第一個dir替換成swf,返回/swf1/dir2/dir3
2. ${string//dir/swf}
: 將全部的dir替換成swf,返回/swf1/swf2/swf3
記憶方法:
兩個符號//
表示貪婪匹配(全部替換)
${變數/查詢/替換值}
查詢中出現了”/”要加轉義符”\/”表示
個人文章連結:http://codeshold.me/2016/11/shell_string.html
相關文章
- shell中字串的處理字串
- shell字串處理總結字串
- 【轉載】SHELL字串處理技巧(${}、##、%%)字串
- 【轉】shell指令碼處理字串的常用方法指令碼字串
- Linux 使用 shell 指令碼處理字串Linux指令碼字串
- (轉)Shell常用處理字串方法(備查)字串
- 字串處理字串
- shell 字元處理字元
- Nifi:nifi內建處理器Processor的開發Nifi
- 不得不知道的Python字串編碼相關的知識Python字串編碼
- 簡單的字串處理字串
- 字串的封送處理字串
- 處理字串的小程式字串
- awk 字串處理字串
- abap 字串處理字串
- 你不知道的前端異常處理(萬字長文,建議收藏)前端
- 你不得不知的Event LoopOOP
- MySQL中不得不提的事務處理MySql
- windows批處理之一:字串處理Windows字串
- JavaScript常用的字串處理方法JavaScript字串
- sql對於字串的處理SQL字串
- 字串、列表、字典內建方法字串
- jstl處理字串JS字串
- javascript字串處理類JavaScript字串
- 不得不知的ReentrantLock原始碼ReentrantLock原始碼
- PL/SQL Developer 不得不知的技巧SQLDeveloper
- LoadRunner字串處理 - 補齊字串字串
- 【分享】Delphi的內部字串處理函式/過程不完全列表字串函式
- 字串和日期時間的處理字串
- 處理字串的方法都在這裡字串
- iOS NSString 字串的特殊處理iOS字串
- 處理stdin輸入的字串指令字串
- Shell 引數的讀取和處理
- 內建資料結構-字串資料結構字串
- 使用 React.cloneElement 動態處理 JSX 和字串內容ReactJS字串
- 用好kafka,你不得不知的那些工具Kafka
- Guava字串處理Joiner、SplitterGuava字串
- PHP 陣列 & 字串處理PHP陣列字串