Shell字串處理

來源:互聯網
上載者:User

shell編程的過程中,經常遇到要擷取檔案名稱以及檔案尾碼名的問題.一般的處理方法如下:

1 #code2 file="thisfile.txt"3 echo "filename:${file%.*}"4 echo "extension:${file##*.}"5 #result6 filename:thisfile7 extension:txt

其主要是利用了Shell內建的一系列字串操作符號.具體的相關操作符號介紹如下:

運算式

含義

${#string}

$string的長度

 

 

${string:position}

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

${string:position:length}

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

 

 

${string#substring}

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

${string##substring}

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

${string%substring}

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

${string%%substring}

從變數$string的結尾,刪除最長相符$substring的子串

 

 

${string/old/new}

使用$new,來代替第一個匹配的$old

${string//old/new}

使用$new,代替所有匹配的$old

${string/#old/new}

替換開頭.如果$string以$old開頭,那麼就用$new替換

${string/%old/new}

替換結尾.如果$string以$old結尾,那麼就用$new替換

 

 

注意:不能使用Regex,只能使用?*的shell擴充.

一些例子說明如下:

將環境變數PATH的各個目錄分開,每行顯示一個.

1 echo -e ${PATH//:/'\n'}

將$PATH內所有的":"換成"\n",並通過echo -e輸出.

echo的-e參數,特別處理一些字元,若沒有-e,則"\n"以字元的形式輸出.

路徑字串處理.

dirname ${FULLPATH}    取目錄部分

basename ${FULLPATH}   取檔案名稱部分

basename ${FULLPATH} ${EXT}  取檔案名稱部分,並且去掉指定的副檔名

 1 #!/bin/sh 2  3 FULLNAME="/home/dwdxdy/OpenCV-2.3.0.tar.bz2" 4 EXT=".bz2" 5 dirname ${FULLNAME} 6 basename ${FULLNAME} 7 basename ${FULLNAME} ${EXT} 8  9 echo ${FULLNAME%/*}            10 echo ${FULLNAME##*/}11 echo ${FULLNAME##*.}

利用shell內建的字串處理,可以完成dirname,basename的功能.

此外,在Shell中還可調用其他命令做字串各種操作,如:awk,sed等.

使用內部操作符代替awk,sed等外部程式,可以省略啟動外部程式的時間,加快整個shell程式的運行

一般情況,優先選擇shell內部操作符,若內部操作符無法完成相應的功能,再考慮awk,sed等外部程式.

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.