2017-04-17 65 views
1

美好的一天,我有點新和混淆關於更換日期。我想從SED,AWK:更改日期格式

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 

它創建一個文件但沒有內容。 感謝推進

回答

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

在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 
+1

或'awk -F /'{printf(「%d-%02d-%02d%s \ n」,$ 3,$ 2,$ 1,「T00:00:00.008Z」)}'file' – Cyrus

2

只需使用AWK:

$ awk -F'/' '{printf "%04d-%02d-%02dT00:00:00.008Z\n", $3, $2, $1}' file 
2016-03-21T00:00:00.008Z