象專業人員那樣截斷字串
象專業人員那樣截斷字串
儘管 basename 和 dirname 是很好的工具,但有時可能需要執行更高階的字串“截斷”,而不只是標準的路徑名操作。當需要更強的說服力時,可以利用 bash 內建的變數擴充套件功能。已經使用了類似於 ${MYVAR} 的標準型別的變數擴充套件。但是 bash 自身也可以執行一些便利的字串截斷。看一下這些例子:
第一種方法:
${varible##*string} 從左向右擷取最後一個string後的字串
${varible#*string}從左向右擷取第一個string後的字串
${varible%%string*}從右向左擷取最後一個string後的字串
${varible%string*}從右向左擷取第一個string後的字串
"*"只是一個萬用字元可以不要
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg
在第一個例子中,輸入了 ${MYVAR##*fo}。它的確切含義是什麼?基本上,在 ${ } 中輸入環境變數名稱,兩個 ##,然後是萬用字元 ("*fo")。然後,bash 取得 MYVAR,找到從字串 "foodforthought.jpg" 開始處開始、且匹配萬用字元 "*fo" 的 最長 子字串,然後將其從字串的開始處截去。剛開始理解時會有些困難,為了感受一下這個特殊的 "##" 選項如何工作,讓我們一步步地看看 bash 如何完成這個擴充套件。首先,它從 "foodforthought.jpg" 的開始處搜尋與 "*fo" 萬用字元匹配的子字串。以下是檢查到的子字串:
f
fo MATCHES *fo
foo
food
foodf
foodfo MATCHES *fo
foodfor
foodfort
foodforth
foodfortho
foodforthou
foodforthoug
foodforthought
foodforthought.j
foodforthought.jp
foodforthought.jpg
在搜尋了匹配的字串之後,可以看到 bash 找到兩個匹配。它選擇最長的匹配,從初始字串的開始處除去,然後返回結果。
上面所示的第二個變數擴充套件形式看起來與第一個相同,但是它只使用一個 "#" -- 並且 bash 執行 幾乎 同樣的過程。它檢視與第一個例子相同的子字串系列,但是 bash 從初始字串除去 最短 的匹配,然後返回結果。所以,一查到 "fo" 子字串,它就從字串中除去 "fo",然後返回 "odforthought.jpg"。
這樣說可能會令人十分困惑,下面以一簡單方式記住這個功能。當搜尋最長匹配時,使用 ##(因為 ## 比 # 長)。當搜尋最短匹配時,使用 #。看,不難記吧!等一下,怎樣記住應該使用
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-983161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dimp時報錯,字串截斷字串
- python如何截斷字串Python字串
- 像懶人那樣思考,像聰明人那樣做事
- 【專題】測試人員 VS 開發人員
- IT安全專業人員應該知道的12件事
- 請不要打斷開發人員
- C++ 字串截斷的實現(基礎函式)C++字串函式
- 網路安全專家成後疫情時代最受追捧專業人員
- 專業人士總被用來做不專業的事,非專業人員則總是用做專業的事
- 像專家那樣理解客戶需求
- 一個SAP開發人員的雙截棍之路
- MacOS專業截圖指南——截圖技巧和截圖工具分享Mac
- 怎樣和開發人員相處
- 前端文字截斷前端
- 【ERROR】有些錯誤並不是你想象的那樣(透過現象看本質)Error
- Linux運維人員的職業發展方向是怎樣的?Linux運維
- 現在企業會要求JAVA人員會怎樣的技術呢?Java
- 網路專業人員需要了解的物聯網資訊
- Adaptiva:82%的IT專業人員認為Windows 10更安全APTWindows
- 技術人員創業通病創業
- 不適合當一名開發人員的10種跡象
- DevOps 專業人員如何成為網路安全擁護者dev
- ETL專業人員應該學習Hadoop的5個理由Hadoop
- 什麼是殭屍網路攻擊?安全專業人員指南
- 技術人員創業的短板創業
- 如何避免 GitHub 那樣斷網 43 秒癱瘓 24 個小時?Github
- 非計算機專業人員如何學習好Python技術?計算機Python
- 未來機器人沒有終結者那樣的外表機器人
- 象受害者一樣工作
- python 分片、截斷序列Python
- 嚴瀾:技術人員如何創業?創業
- AWS開發人員認證考試樣題解析
- 軟體測試人員怎樣才能成為大牛?
- 聊聊創業團隊的專案管理如何面向開發人員優化創業團隊專案管理優化
- 為什麼那麼多零基礎人員學習Python?Python
- System.data.sqlclient.sqlexception:將截斷字串或二進位制資料終止SQLclientException字串
- 讀取popen輸出結果時未截斷字串導致的命令列注入字串命令列
- IT職場:精益生產需要專職人員?