美好的一天,我对更换日期感到有点新意和困惑。我想在一个巨大的文件中更改所有日期 从
21/3/2016
到
2016-03-21T00:00:00.008Z
我做了类似的事
sed -ri 's#([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})#date -d"\1/\2/\3"
+"%Y-%m-%dT%H:%M:%SZ"#e' file
它创建了一个文件但没有内容。 谢谢提前
答案 0 :(得分:4)
使用GNU sed:
echo "21/1/2016" | sed -E 's|/([1-9])/|/0\1/|; s|^([1-9]/)|0\1|; s|([0-9]{2})/([0-9]{1,2})/([0-9]{4})|\3-\2-\1T00:00:00.008Z|'
输出:
2016-03-21T00:00:00.008Z
答案 1 :(得分:2)
只需使用awk:
$ awk -F'/' '{printf "%04d-%02d-%02dT00:00:00.008Z\n", $3, $2, $1}' file
2016-03-21T00:00:00.008Z
答案 2 :(得分:1)
在awk中:
$ awk '{
split($0,a,"/") # split by / to a
for(i=1;i<=2;i++)
a[i]=sprintf("%02d", a[i]) # zeropad a[1] and a[2]
print a[3]"-"a[2]"-"a[1] "T00:00:00.008Z" # output
}' file
2016-03-21T00:00:00.008Z