shell程式設計的過程中,經常遇到要獲取檔名以及檔案字尾名的問題.一般的處理方法如下:
#code
file="thisfile.txt"
echo
"filename:$"
echo
"extension:$"
#result
filename:thisfile
extension:txt
表示式
含義$
$string的長度
$
在$string
中,從位置$position
開始提取子串
$
在$string
中,從位置$position
開始提取長度為$length
的子串
$
從變數$string
的開頭,刪除最短匹配$substring
的子串
$
從變數$string
的開頭,刪除最長匹配$substring
的子串
$
從變數$string
的結尾,刪除最短匹配$substring
的子串
$
從變數$string
的結尾,刪除最長匹配$substring
的子串
$
使用$new
,來代替第乙個匹配的$old
$
使用$new
,代替所有匹配的$old
$
替換開頭.如果$string
以$old
開頭,那麼就用$new
替換
$
替換結尾.如果$string
以$old
結尾,那麼就用$new
替換
注意:不能使用正規表示式,只能使用?*
的shell擴充套件.
將環境變數path的各個目錄分開,每行顯示乙個.
echo
-e$
將$path內所有的」:」換成」\n」,並通過echo -e輸出.
echo的-e引數,特別處理一些字元,若沒有-e,則」\n」以字元的形式輸出.
路徑字串處理.
dirname $
取目錄部分
basename $
取檔名部分
basename fu
llpa
th取檔名部分,並且去掉指定的副檔名
#!/bin/sh
fullname="/home/dwdxdy/opencv-2.3.0.tar.bz2"
ext=".bz2"
dirname $
basename $
basename $ $
echo $
echo $
echo $
利用shell內建的字串處理,可以完成dirname
,basename
的功能.
此外,在shell中還可呼叫其他命令做字串各種操作,如:awk
,sed
等.
使用內部操作符代替awk
,sed
等外部程式,可以省略啟動外部程式的時間,加快整個shell程式的執行.
一般情況,優先選擇shell內部操作符,若內部操作符無法完成相應的功能,再考慮awk,sed等外部程式.
shell字串處理
一 構造字串 直接構造 str zero hello str first i am a string str second success 重複多次 repeat the first parm 1 by 2 times strrepeat 舉例 str repeat strrepeat user n...
shell 字串處理
一 號擷取,刪除左邊字元,保留右邊字元。echo 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.google.com test.htm 二 號擷取,刪除左邊字元,保留右邊字元。echo 表示從左邊開始刪除最後 最右邊 乙個 號及左...
SHELL字串處理
linux 的字串擷取很有用。有八種方法。假設有變數 var 1.號擷取,刪除左邊字元,保留右邊字元。複製 如下 echo 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.aaa.com 123.htm 2.號擷取,刪除左邊字元,保...