我有大量的文件,其中每個字符串是不正確的日期格式的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對象嗎? –