Bash 使用模式从字符串解析日期
给定字符串Bash 使用模式从字符串解析日期,bash,date,parsing,pattern-matching,Bash,Date,Parsing,Pattern Matching,给定字符串 log-2015-02-10 我想用某种模式来解析数据,比如 log-YYYY-mm-dd 在Bash中可能吗?命令可以解析字符串,但不能像从低级语言调用strptime库那样指定格式。不过,您可以这样做: s=log-2015-02-10 when=$(date -d "${s#log-}") echo $when # Tue Feb 10 00:00:00 EST 2015 有很多可能性,但这里有一个简单的例子,它在单独的变量中提供了三个日期组件: IFS=- read _
log-2015-02-10
我想用某种模式来解析数据,比如
log-YYYY-mm-dd
在Bash中可能吗?命令可以解析字符串,但不能像从低级语言调用
strptime
库那样指定格式。不过,您可以这样做:
s=log-2015-02-10
when=$(date -d "${s#log-}")
echo $when # Tue Feb 10 00:00:00 EST 2015
有很多可能性,但这里有一个简单的例子,它在单独的变量中提供了三个日期组件:
IFS=- read _ year month day <<< log-2015-02-10
如果要交换日期的各个部分,我可以使用类似的方法吗?我的意思是,例如,“log-10-02-2015”。如果您需要控制日期的解析方式,您可能需要手动执行,如@chepner的回答所示。
[[ log-2015-02-10 =~ log-(....)-(..)-(..) ]]
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}