這是我來自 db 的資料
"1.1.1.1|1636057103"
我如何date '%d.%m.%y %H:%M:%S' -d @1636057103在 AWK 中使用類似的東西來轉換 $2 變數中的 unix 時間戳以獲得如下輸出:
"1.1.1.1 - 04.11.21 22:18:23"
?
謝謝!
uj5u.com熱心網友回復:
使用 GNUawk及其strftime:
awk -F '["|]' '{$3=strftime("%d.%m.%Y %H:%M:%S", $3); print "\"" $2 " - " $3 "\""}' file
或者
awk -F '["|]' '{$0=strftime("\"" $2 " - %d.%m.%Y %H:%M:%S\"", $3)}1' file
輸出:
“1.1.1.1 - 04.11.2021 21:18:23”
請參閱:9.1.5 時間函式
uj5u.com熱心網友回復:
假設:
- 資料包含文字雙引號作為書擋
- 資料存盤在變數中
- 重新格式化的資料以雙引號作為書擋存盤在新變數中
使用一些基本的bash引數替換/擴展運算子:
data='"1.1.1.1|1636057103"'
data="${data//\"}" # strip double quotes
ip="${data%|*}" # break into ip and ...
epoch="${data#*|}" # epoch
# build new variable:
printf -v newddata "\"${ip} - '%(%d.%m.%y %H:%M:%S)T' @${epoch}" "\""
echo "${newdata}"
這會產生:
"1.1.1.1 - 04.11.21 15:18:23"
注意:可能是由于我們的時區不同,小時部分與 OP 的示例輸出無關
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350761.html
