【问题标题】:Split date variable into components将日期变量拆分为组件
【发布时间】:2013-12-18 19:55:41
【问题描述】:

我有一个来自日志的字符串,与此等价....

a="20131202"

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

我假设 sed 是工具

我能得到一些指导吗?

【问题讨论】:

    标签: string bash split


    【解决方案1】:

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

    或者您可能想了解其他信息: 使用日期命令:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 这是我会做的,应该比打电话给sed更快。
        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-18
            • 2011-10-02
            • 1970-01-01
            • 2013-06-09
            • 1970-01-01
            • 1970-01-01
            • 2013-12-10
            • 1970-01-01
            相关资源
            最近更新 更多