将日期变量拆分为组件

时间:2013-12-02 23:01:21

标签: string bash split

我有一个来自日志的字符串,这是...的等价物。

α= “20131202”

我需要将它分成3个组件。

我假设sed是工具

我可以获得一些指导吗?

5 个答案:

答案 0 :(得分:4)

参数扩展是一个更好的工具:

a=20131202
year=${a:0:4}
month=${a:4:2}
day=${a:6:2}

答案 1 :(得分:2)

如果你只是想剪切字符串,那么像$ {a:0:4}这样的东西已经足够了。

或者你可能想知道别的东西: 使用日期命令:

a="20131202"
declare -a A=($(date -d $a +"%Y %m %d"));
echo ${A[0]}, ${A[1]}, ${A[2]}

答案 2 :(得分:2)

使用正则表达式的替代方法:

[[ $a =~ (....)(..)(..) ]]
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}

答案 3 :(得分:1)

你不需要sed。 您可以使用以下语法:

echo ${a:0:4} # print 2013

答案 4 :(得分:0)

如果您真的对使用sed感兴趣,这将适用于您提供的示例:

yes a=\"20131202\" | sed -e :a -e 's/...\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)./\1 \2 \3/'