2015-08-27 77 views
1

我正在修改舊的bash文件,並且在處理字符串時遇到了一些麻煩。問題在於字符串可以是任何隨機在_<date>.<num>左側的任何東西。例如,從ThisIsAString-Sub_tag_150827.1,我需要提取_150827.1。在bash中,這似乎很難做到。在任何其他語言中,我將分成_,並且只抓取列表的最後一個元素。我如何在bash中做到這一點?我嘗試了幾種不同的方法(包括awk),但似乎無法做到。Bash字符串操作,提取/刪除部分

回答

6

使用bash的參數擴展:

a="ThisIsAString-Sub_tag_150827.1" 
echo "${a##*_}" 

輸出:

 
150827.1 
+0

嗯......其實我試過的東西真的相似... $ {串#_ *} – user797963

+4

@ user797963以'# #'而不是#',Bash將刪除最長的匹配字符串,而不是最短的;使用'#'會留下「tag_」前綴。請參見[手冊頁](http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html)。 –

+3

'_'和'*'的順序很重要。 – Cyrus