2017-08-14 14 views

回答

0

你需要將它傳遞給日期等之前解析字符串:

N1=$(awk '{ print substr($0,1,8)" "substr($0,9,2)":"substr($0,11,2)":"substr($0,13,2)}' <<< 20170708192012) 

用AWK和SUBSTR函數接受日期格式建立N1。

1

如果您awk支持time functionsmktimestrftime(這是一個GNU擴展名),你可以先轉換輸入的字符串爲Unix時間戳(手動分割和使用mktime),然後用strftime格式化輸出:

N1=20170708192012 
D1=$(awk '{ print strftime("%Y%m%d%H%M%S", mktime(substr($0,1,4)" "substr($0,5,2)" "substr($0,7,2)" "substr($0,9,2)" "(substr($0,11,2)+40)" "substr($0,13,2))) }' <<<"$N1") 

請注意,mktime接受日期只在"YYYY MM DD HH MM SS"格式,這就是爲什麼我們需要手動構建它。但是它自動進行標準化,它會很高興地將"2017 1 1 0 80 0"轉換爲與"2017 1 1 1 20 0"相同的時間戳。這就是爲什麼我們可以簡單地將40添加到輸入的分鐘數並獲得正確的輸出。

您的輸入,我們得到:

echo $D1 
20170708200012 
相關問題