给出以下输入
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.
我做错了什么,我甚至无法匹配那里的日期?
感谢。
答案 0 :(得分: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
答案 1 :(得分: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