【发布时间】:2013-12-18 19:55:41
【问题描述】:
我有一个来自日志的字符串,与此等价....
a="20131202"
我需要将它分成 3 个组件。
我假设 sed 是工具
我能得到一些指导吗?
【问题讨论】:
我有一个来自日志的字符串,与此等价....
a="20131202"
我需要将它分成 3 个组件。
我假设 sed 是工具
我能得到一些指导吗?
【问题讨论】:
如果你只是想剪切字符串,像 ${a:0:4} 这样的东西就足够了。
或者您可能想了解其他信息: 使用日期命令:
a="20131202"
declare -a A=($(date -d $a +"%Y %m %d"));
echo ${A[0]}, ${A[1]}, ${A[2]}
【讨论】:
如果您真的对使用 sed 感兴趣,这将适用于您提供的示例:
yes a=\"20131202\" | sed -e :a -e 's/...\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)./\1 \2 \3/'
【讨论】:
使用正则表达式的替代方法:
[[ $a =~ (....)(..)(..) ]]
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}
【讨论】:
sed更快。
您不需要 sed。 你可以使用这个语法:
echo ${a:0:4} # print 2013
【讨论】:
参数扩展是一个更好的工具:
a=20131202
year=${a:0:4}
month=${a:4:2}
day=${a:6:2}
【讨论】: