我有大量的文件,其中每个字符串是不正确的日期格式的json。我现在的格式是2011-06-02 21:43:59
,我需要做的是在中间添加T
将其转换为ISO格式2011-06-02T21:43:59
。awk更改日期时间格式
有人可以请我指点一下一个班轮解决方案吗?这是2小时挣扎,但没有运气。
我有大量的文件,其中每个字符串是不正确的日期格式的json。我现在的格式是2011-06-02 21:43:59
,我需要做的是在中间添加T
将其转换为ISO格式2011-06-02T21:43:59
。awk更改日期时间格式
有人可以请我指点一下一个班轮解决方案吗?这是2小时挣扎,但没有运气。
下面似乎是工作溶液:
sed -i -r 's/([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2})/\1T\2/g' myfiles
-i
处理文件-r
是对扩展正则表达式([0-9]{4}-[0-9]{2}-[0-9]{2})
切换 - 是日期
- 日期和时间之间的空白源数据([0-9]{2}:[0-9]{2}:[0-9]{2})
- 是时候sed
会来拯救你,用一个简单的regex
:
sed 's/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\) /\1T/g' file > file.new
,或者修改的地方文件:
sed -i 's/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\) /\1T/g' file
例
echo '2011-06-02 21:43:59' | sed 's/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\) /\1T/g'
2011-06-02T21:43:59
阅读更多关于正则表达式的信息:Regex Tag Info
这似乎不起作用,请参阅我的解决方案。 –
@ mr.nothing:它为我工作(在Ubuntu 12.04上试用过)。你得到的错误是什么?我在我的回答中发布了一个示例输出。 – codeforester
还与awk
,你可以用gensub
匹配组:
awk '{
print gensub(/([0-9]{4}-[0-9]{2}-[0-9]{2})\s+([0-9]{2}:[0-9]{2}:[0-9]{2})/,
"\\1T\\2",
"g");
}' data.txt
echo '2011-06-02 21:43:59' | awk 'sub(/ /,"T")'
2011-06-02T21:43:59
显示样品,文件5个或10个项目应该是足够。 – Lizardx
向我们展示一个示例文件! – NinjaGaiden
目前还不清楚_“每个字符串是json的文件数量”是什么意思。你的意思是每个文件都包含多个JSON对象吗? –