Shell字串操作大全

2021-07-09 07:33:13 字數 2361 閱讀 9822

一般字串宣告時,都會賦值

str='test'

但是在指令碼執行中,為了避免出現引用為宣告的字串變數時,可以在如下處理:

#如果str沒宣告,則輸出default

echo "$"

#default

str=『abc,def,ghi,abcjkl』

#字串長度

echo $

從位置position開始擷取字串

格式: $

#從第5個元素開始擷取

echo $

#ef,ghi,abcjkl

從start開始,擷取長度為length的字串

格式:$

echo $

#ef,ghi,a

從str開頭開始刪除substring匹配

格式:$或$

str="abc,def,ghi,abcjkl"

#從str開頭開始刪除最短的a*c匹配

echo $

#,def,ghi,abcjkl

#從str開頭開始刪除最長的a*c匹配

echo $

#jkl

從str結尾開始刪除substring匹配

格式:$或$

#從str結尾開始刪除最短的b*l匹配

echo $

#abc,def,ghi,a

#從str結尾開始刪除最長的b*l匹配

echo $

#a

用replace替換字串中第乙個substring

格式:$或者$

#用test替換字串中第乙個abc

echo $

#test,def,ghi,abcjkl

#用test替換字串中所有的abc

echo $

#test,def,ghi,testjkl

#從str開頭匹配,用test替換最長的a*c

echo $

#testjkl

#從str結尾匹配,用test替換最長的b*l

echo $

#atest

對於上面的一些操作,如果改用expr執行,那麼就很簡單了:

str='2016-01-05'

#求字串長度

length=`expr length $str`

echo $length

#10

#擷取字串

substr=`expr substr $str 1 4`

echo $substr

#2016

#求字串中元素的下標索引,如果元素不存在輸出0(因為此時索引從1開始)

index=`expr index $str "2"`

echo $index

#1

一般擷取字串還可以用cut和awk,如:

str='2016-01-05'

echo $str | awk -f '-' ''

echo $str|awk ''

echo $str | awk -f '-' ''

#2016

#2016

#2016

#01#05

但是,不建議採用這種方式,因為當檔案很大,有很多行,上述方式需要開闢管道,會啟動新程序,效率很低下。同時,如果要把awk結果存在陣列時,就還需要乙個for迴圈才行。

因此,建議採用下面這種方式:

arr=($)

echo $

#01

把split結果存到陣列中後,剩下的就是對陣列的操作,如果對shell陣列不熟,那麼可以參考

shell陣列

shell字串操作、shell陣列熟悉之後就可以用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內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。一 判斷...