【问题标题】:How to match date mm/dd/yyyy如何匹配日期 mm/dd/yyyy
【发布时间】:2012-06-06 04:30:50
【问题描述】:

给定以下输入

506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012,

我想过滤行尾的日期,所以我可以把它的mm/dd/yyyy格式改成MySQL日期格式yyyy-mm-dd:

我正在尝试匹配行末尾的日期,首先删除了尾随的“,”(逗号)。

{
    s/,$//g
    /\([0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9][0-9][0-9][0-9]\)$/=
}

我收到的是 12847,但我期待的是 04262012。

我做错了什么,我什至无法匹配那里的日期?

谢谢。

【问题讨论】:

  • 你知道你的日期总是在行尾吗?这将完全消除对正则表达式的需求。
  • 这是数据库文件的结果转储。它总是在行的末尾。我想要分组,这样我就可以匹配并以不同的格式打印出日期。

标签: sed


【解决方案1】:

这可能对你有用:

echo "506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012," | 
sed 's|,\(..\)/\(..\)/\(....\),$|,\3-\2-\1,|'
506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,2012-26-04,

如果你只想要日期:

echo "506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012," | 
sed 's|.*,\(..\)/\(..\)/\(....\),$|\3-\2-\1|'
2012-26-04

【讨论】:

    【解决方案2】:

    这对我有用:

    sed "s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/g" someFile.txt
    

    至少它将日期字符串替换为所需格式之一。

    只打印最后的日期,以下对我有用:

    sed "s/.*\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/g" someFile.txt
    

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 2018-03-31
      • 2016-01-02
      • 1970-01-01
      • 2014-04-18
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多