shell字串操作

2021-05-23 09:50:52 字數 1226 閱讀 6958

1,字串剪裁

file=/dir1/dir2/dir3/my.file.txt

我們可以用 $ 分別替換獲得不同的值:

$:拿掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt

$:拿掉最後一條 / 及其左邊的字串:my.file.txt

$:拿掉第乙個 . 及其左邊的字串:file.txt

$:拿掉最後乙個 . 及其左邊的字串:txt

$:拿掉最後條 / 及其右邊的字串:/dir1/dir2/dir3

$:拿掉第一條 / 及其右邊的字串:(空值)

$:拿掉最後乙個 . 及其右邊的字串:/dir1/dir2/dir3/my.file

$:拿掉第乙個 . 及其右邊的字串:/dir1/dir2/dir3/my

記憶的方法為:

# 是去掉左邊(在鍵盤上 # 在 $ 之左邊)

% 是去掉右邊(在鍵盤上 % 在 $ 之右邊)

單一符號是最小匹配;兩個符號是最大匹配。也就是說,當匹配的有多種方案的時候,選擇匹配的最大長度還是最小長度。(注意,$是用於掐頭去尾,表示式一定得是需要去掉的字元段的準確表述或正規表示式。如,string=qwenkj,那麼$得到的仍是原字串string)

還有兩種方式:

tomcat_path=$,

是從字串的第n+1個(含第n+1個)擷取長度為m的字串,可省略m引數

expr substr "$x" 1 3,擷取從第1個到第3個的字元子串

2,得到長度

x="abcd"

#方法一

expr length $x

# 方法二

echo $

# 方法三

expr "$x" : ".*"

3.查詢子串

expr index $x "string" 查詢string裡從第乙個字元起,所有字元能匹配到$x裡字元的最先位置 如 expr index "adcd" "d2a" 返回值為1

awk 'begin ' (返回的為符合條件的第乙個子串的位置,如沒有返回0)

注意:expr match $x "abc" ,在expr的match是從第乙個字元開始對比的,表示匹配長度

4.字串的替換

x=abcdabcd

echo $ # 只替換乙個

bbcdabcd

echo $ # 替換所有

bbcdbbcd

例子:

shell 字串操作

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

shell字串操作

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

shell 字串操作

字串長度 stringz abcdefg len len expr length stringz 擷取指定個數的字串 stringz abcdefgasdqwe expr substr stringz 2 3 從第二個字元開始,擷取3個字元 expr substr stringz 3 5 從第三個字...