【问题标题】:Cutting part of line/string in shell scripting在 shell 脚本中剪切部分行/字符串
【发布时间】:2014-01-16 20:04:44
【问题描述】:

我有以下行:

Jan 13, 2014 1:01:31 AM

我想删除该行的秒部分。结果应该是:

Jan 13, 2014 1:01 AM

如何做到这一点?

【问题讨论】:

  • 如果你说明你是如何获得这样的行会更好,因为我们可以尝试改变date的输出格式。

标签: bash shell cut


【解决方案1】:

使用参数扩展:

t='Jan 13, 2014 1:01:31 AM'
ampm=${t: -2}               # last two characters
echo "${t%:*} $ampm"        # remove everything after the last :

【讨论】:

  • +1,这是最有效的方式,与生成其他进程(如 sed)不同。
【解决方案2】:

使用 sed:

s='Jan 13, 2014 1:01:31 AM'
sed 's/:[0-9]*\( [AP]M\)/\1/' <<< "$s"
Jan 13, 2014 1:01 AM

【讨论】:

    【解决方案3】:

    你可以试试这个:

    sed 's/:[^:]* / /'
    

    用你的例子:

    kent$ (master|✚2) echo "Jan 13, 2014 1:01:31 AM"|sed 's/:[^:]* / /'
    Jan 13, 2014 1:01 AM
    

    【讨论】:

      【解决方案4】:

      另一种方式,如果你的日期命令是支持 -d 选项的 gnu date。

      $ str="Jan 13, 2014 1:01:31 AM"
      
      $ date -d "$str" +"%b %d, %Y %l:%M %p"
      
      Jan 13, 2014  1:01 AM
      

      【讨论】:

        猜你喜欢
        • 2011-04-14
        • 1970-01-01
        • 2012-12-29
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-16
        相关资源
        最近更新 更多