Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用模式从字符串解析日期_Bash_Date_Parsing_Pattern Matching - Fatal编程技术网

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]}