shell字串操作詳解

2022-09-26 17:12:15 字數 1872 閱讀 4008

1、shell變數宣告的判斷

表示式含義

$變數var的值, 與$var相同

$如果var沒有被宣告, 那麼就以$default作為其值 *

$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *

$如果var沒有被宣告, 那麼就以$default作為其值 *

$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *

$如果var宣告了, 那麼其值就是$other, 否則就為null字串

$如果var被設定了, 那麼其值就是$other, 否則就為null字串

$如果var沒被宣告, 那麼就列印$err_msg *

$如果var沒被設定, 那麼程式設計客棧就列印$err_msg *

$匹配之前所有以varpr程式設計客棧efix開頭進行宣告的變數

$匹配之前所有以varprefix開頭進行宣告的變數

* 很簡單,大家試試就明白了,不多說,注意美元符號與左花括號之間不能存在空格,左花括號不能與變數名間存在空格,變數名不能與判斷符合間有空格。

2、字串操作(長度獲取,讀取,匹配刪除,替換)

表示式含義

$$string的長度

$在$string中, 從位置$position開始提取子串

$在$string中, 從位置$position開始提取長度為$length的子串

$從變數$string的開頭, 刪除最短匹配$substring的子串

$從變數$string的開頭, 刪除最長匹配$substring的子串

$從變數$string的結尾, 刪除最短匹配$substring的子串

$從變數$string的結程式設計客棧尾, 刪除最長匹配$substring的子串

$使用$replacement, 來代替第乙個匹配的$substring

$使用$replacement, 代替所有匹配的$substring

$如果$string的字首匹配$substring, 那麼就用$replacement來代替匹配到的$substring

$如果$string的字尾匹配$substring, 那麼就用$replacement來代替匹配到的$substring

* 需要說明的是substring可以是正規表示式。

可替代命令:cut sed awk ,這三個是更為強大的字串處理命令,能幹關於字串的非常多事情。這裡有很多樣例介紹。

3、效能比較

time for i in $(seq 10000);do a=$;done;

time for i in $(seq 10000);do a=$(expr length $test);done;

複製** **如下:

realwww.cppcns.com 0m0.181s

user 0m0.170s

sys 0m0.000s

real 0m8.580s

user 0m2.497s

sys 0m6.075s

這裡相當於迴圈呼叫awk、sed、cut、length等外部命令處理字串,耗時是理所當然的。之前有篇說過shell優化問題,這裡不再贅述,s程式設計客棧hell迴圈比awk慢非常多,這裡的效能測試其實不太有實際意義,具體原因結合shell優化那篇看。

4、 字串正則判斷

可以類似使用如下命令:

複製** **如下:

if [[ "$" =~ "^[0-9]-[0-9]-[0-9]$" ]]

then

...

fi

據說需要在bash版本3.0以上才能使用,檢視bash版本方法為:bash -version ,檢視當前直譯器種類命令:echo $0

本文標題: shell字串操作詳解

本文位址:

shell字串操作

1,字串剪裁 file dir1 dir2 dir3 my.file.txt 我們可以用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿掉第乙個 及其左邊的字串 file.txt 拿掉最...

shell 字串操作

字串長度 expr length string expr string 從字串開始的位置匹配子串的長度 expr match string substring substring 是乙個正規表示式 expr string substring substring 是乙個正規表示式 索引expr ind...

shell字串操作

linux shell 字串操作 長度,查詢,替換 詳解 在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如 awk,sed都可以做字串各種操作。其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。一 判斷...