0

给定以下输入

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。

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

谢谢。

4

2 回答 2

3

这可能对您有用:

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
于 2012-06-05T20:30:50.030 回答
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
于 2012-06-05T19:34:41.770 回答