我有大量的文件格式爲從提取文件名
OUTPUT_11_0.175
我想提取兩個數字的文件名(可變)子,我設法拿到了第二數量以下內容:
for file in ./dir/*; do
phi=${file##*_}
echo "$phi"
done
要獲得這種情況下,其他的11號,我試過
a=${file#*_}
,但是這會返回第一個下劃線左邊的所有內容(該目錄包含下劃線) - 是否有某種方法說服bash去讀取兩個下劃線之間的''''並返回'11'?
我有大量的文件格式爲從提取文件名
OUTPUT_11_0.175
我想提取兩個數字的文件名(可變)子,我設法拿到了第二數量以下內容:
for file in ./dir/*; do
phi=${file##*_}
echo "$phi"
done
要獲得這種情況下,其他的11號,我試過
a=${file#*_}
,但是這會返回第一個下劃線左邊的所有內容(該目錄包含下劃線) - 是否有某種方法說服bash去讀取兩個下劃線之間的''''並返回'11'?
$ IFS=_ read -a foo <<< "OUTPUT_11_0.175"
$ echo "${foo[0]}"
OUTPUT
$ echo "${foo[1]}"
11
$ echo "${foo[2]}"
0.175
我發現〜http://tldp.org/LDP/abs/html/x17837.html#HERESTRINGSREF幫助我拼湊出這意味着什麼。 –
很好的解釋,'IFS = _'將內部字段分隔符設置爲'_',它將用於將'_'周圍的herestring拆分爲'foo'數組 – Aaron
'設定 - $ {//文件_ /};回聲「$ 2 $ 3」'? – Cyrus