使用模式从字符串中解析日期

时间:2015-08-05 15:50:55

标签: bash date parsing pattern-matching

给出字符串

[[('WASHINGTON', 'NNP')], [('New', 'NNP'), ('York', 'NNP')]]

我想使用某种类似

的模式来解析它的日期
log-2015-02-10

Bash有可能吗?

2 个答案:

答案 0 :(得分:1)

date命令可以解析字符串,但是您无法使用较低级别语言的strptime库调用来指定格式。不过你可以这样做:

s=log-2015-02-10
when=$(date -d "${s#log-}")
echo $when # Tue Feb 10 00:00:00 EST 2015

答案 1 :(得分:1)

有很多可能性,但这里有一个简单的方法,可以在不同的变量中提供三个日期组件:

IFS=- read _ year month day <<< log-2015-02-10

如果输入不是一组简单的分隔字段,您可以使用正则表达式(可能比这里显示的更常规):

[[ log-2015-02-10 =~ log-(....)-(..)-(..) ]]
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}