日期我的格式为$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