日期我的格式爲$var_YYYY_MM_DD_HH_MM_SS.txt
獲取年,月,和可變
Eg: variable=sample_data_2017_01_01_10_22_10.txt
我需要提取此變量以下的variable
:
Year=YYYY
Month=MM
Date=DD
能否請你幫忙嗎?
日期我的格式爲$var_YYYY_MM_DD_HH_MM_SS.txt
獲取年,月,和可變
Eg: variable=sample_data_2017_01_01_10_22_10.txt
我需要提取此變量以下的variable
:
Year=YYYY
Month=MM
Date=DD
能否請你幫忙嗎?
使用本機bash
,正則表達式運算符~
並使用捕獲的組將它們存儲在變量中以供稍後使用。
variable="sample_data_2017_01_01_10_22_10.txt"
if [[ $variable =~ ^sample_data_([[:digit:]]{4})_([[:digit:]]{2})_([[:digit:]]{2}).*$ ]]; then
year="${BASH_REMATCH[1]}"
month="${BASH_REMATCH[2]}"
date="${BASH_REMATCH[3]}"
fi
你可以嘗試:
Year=$(echo $variable | cut -d '_' -f3)
Month=$(echo $variable | cut -d '_' -f4)
Date=$(echo $variable | cut -d '_' -f5)
這隻能如果你確信你的變量是你在你的問題描述,雖然具體的方式佈局。它分割由'_'字符分隔的字符串,然後返回標記爲-f
參數的字段以進行剪切。
用awk
Year=$(echo $variable | awk '{split($0,a,"_"); print a[3]}')
Month=$(echo $variable | awk '{split($0,a,"_"); print a[4]}')
Day=$(echo $variable | awk '{split($0,a,"_"); print a[5]}')
您可以簡單地使用read
命令設置IFS='_'
。在一些其他的awk解決方案的
$ variable=sample_data_2017_01_01_10_22_10.txt
$ IFS='_' read -r tmp tmp Year Month Date tmp <<< "$variable"
$ echo "$Year : $Month : $Date"
2017 : 01 : 01
建設一個更完整的解決方案是:
echo $variable | awk -F_ '{ printf "Year="$3"\nMonth="$4"\nDate="$5"\n" }'
很不錯的解決方案先生。 – RavinderSingh13