shell編程--切分檔案名稱

來源:互聯網
上載者:User

標籤:style   blog   http   strong   sp   檔案   on   2014   log   

  引:有時候我們會碰到這這樣的需求,需要從檔案名稱xxx.yyy中切分出名稱xxx和副檔名yyy。這些可以利用“%” “%%”  “#”  “##”操作符來完成。

 

一. “%” 操作符:

1. 例子:

例1

例2

2.解釋:

      例1:file變數的值為“sample.jpg”。 file%.*  意思是從file變數(例子中是sample.jpg)的右邊開始匹配,直到遇到第一個匹配 .* 的字串(例子中是.jpg),然後將其刪掉 。所以變數name的值就是sample了。

     例2:如果file變數的值為"sample.jpg.txt",那麼file%.* 只會刪除 .txt ,name會是sample.jpg。也即%操作符是非貪婪的。遇到第一個匹配後就會停止。

3. 注意:

  •       % 後面的並不是Regex,* 匹配任意長的字元,? 匹配一個字元。如1?2 可以匹配132和1a2;a* 可以匹配任意以a開頭的字串。
  •    匹配是從最後一個字元,從右向左匹配的。file%.*m (變數file值為sample.jpg)不會刪掉任何字元。因為變數的最後一個字元是 g,永遠也不會有匹配 .*m 的字串。 

二. "%%" 操作符:

1. 例子:

2. 解釋:

      “%%” 與 “%” 的區別就是‘%%‘是貪婪的,意味著它會匹配合格最長字串。所以在例子中,file%%.* 會從右邊開始匹配,最長的匹配是.jpg.txt,然後將其刪除。所以變數name的值為sample。

 

 

三. "#"操作符

1. 例子:

例1

例2

2. 解釋:

  例1:file#*. 是從右向左執行非貪婪匹配。找到第一個匹配 *. 的字串(例子中是"sample."),然後將其刪除。於是變數ext就是 “jpg” 了。

  例2:說明了#的匹配是非貪婪的,找到第一個匹配了就會停止。

四. "##"操作符

1. 例子:

2. 解釋:

  與"%%" 類似,“##” 是 “#” 的貪婪模式,也即會從右向左匹配合格最長字串。所以例子中將會刪除“sample.jpg.txt"中的”sample.jgp.“。

shell編程--切分檔案名稱

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.