Bash
將 csv 文件中的第二列從 Unix 時間轉換為可讀日期/時間的 Bash 腳本
我的輸入文件是逗號分隔的 .csv。我想將第二列從 unix 時間轉換為這樣的可讀日期時間格式……
before 1502280000 after 8/10/17 08:00:00
我也想忽略第一行,因為它是標題。
我在 Solaris 10 上的 bash shell 中執行
我的 csv 的前兩行看起來像這樣
HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS xxxx,1502286180,xxxx,xxxx xxxx,1502280347,xxxx,xxxx
尋找輸出
HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS xxxx,Wed Aug 9 09:43:00 EDT 2017,xxxx,xxxx xxxx,Wed Aug 9 08:05:47 EDT 2017,xxxx,xxxx
我強烈推薦時間格式 YYYY-mm-dd HH:MM:SS——這種格式是明確的,它按詞彙和時間順序排序。
您可以為此使用 perl:
perl -MPOSIX=strftime -F, -ane ' $F[1] = strftime("%F %T", localtime $F[1]) if $. > 1; print join ",", @F ' file
awk
方法:awk -F, 'NR>1{printf"%s,",$1; system("printf \"$(date -d @"$2")\"");printf",%s,%s\n",$3,$4} ' infile.txt
HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS xxxx,Wed Aug 9 09:43:00 EDT 2017,xxxx,xxxx xxxx,Wed Aug 9 08:05:47 EDT 2017,xxxx,xxxx