我有一个来自日志的字符串,这是...的等价物。
α= “20131202”
我需要将它分成3个组件。
我假设sed是工具
我可以获得一些指导吗?
答案 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/'