2
我一直在學習shell腳本和正則表達式。 我想找到一種方法從下面的文件名中提取特定的部分。使用正則表達式和Shell腳本
profiles_060315091024_30398-r-00006.avro
我想從文件名中提取數字30398。
由於使用awk
我一直在學習shell腳本和正則表達式。 我想找到一種方法從下面的文件名中提取特定的部分。使用正則表達式和Shell腳本
profiles_060315091024_30398-r-00006.avro
我想從文件名中提取數字30398。
由於使用awk
:
str='profiles_060315091024_30398-r-00006.avro'
awk -F'[_-]' '{print $3}' <<< "$str"
30398
-F'[_-]'
被設置自定義字段分隔符作爲_
或-
僅使用殼。我假設你想要下劃線和連字符之間的數字。
正則表達式(慶典專用)
filename=profiles_060315091024_30398-r-00006.avro
if [[ $filename =~ _([0-9]+)- ]]; then num=${BASH_REMATCH[1]}; fi
echo $num
# => 30398
使用參數擴展(任何POSIX殼)
tmp=${filename##*_} # remove from the start up to last underscore
tmp=${tmp%%-*} # remove the first hyphen until end of string
echo $tmp
# => 30398
我將不得不改變一些東西,如果我想保存數字「30398」在一個變量?對不起,我應該在最初的問題中提出這個問題。 – danilo
你可以這樣做:'myvar = $(awk -F'[_-]''{print $ 3}'<<<「$ str」)' – anubhava
非常感謝。是否需要'{print $ 3}'?它是幹什麼用的? – danilo