Se você tem o GNU awk ( gawk
), que normalmente é o caso de Linux e Cygwin não embutidos, então você pode usar o strftime
function.
if (match($0, /^(.*timestamp=)([0-9]+)(.*)$/, parts)) {
time = strftime("%F %T", parts[2]);
$0 = parts[1] time parts[3];
}
Em um sistema embarcado com BusyBox, você pode ter uma versão mais restrita do awk, mas um utilitário date
capaz de fazer a conversão.
if (match($0, /timestamp=[0-9]+/)) {
system("date +'%F %T' -d " substr($0, RSTART+10, RLENGTH-10)) | getline time;
$0 = substr($0, 1, RSTART) time substr($0, RSTART+RLENGTH);
}
Com apenas as ferramentas POSIX, não é possível converter entre datas legíveis por humanos e timestamps do Unix além de fazer o cálculo sozinho. (Eu sei que há código shell e awk disponível na web para isso, mas eu não tenho um link à mão.) Eu recomendo ter certeza de que você tem algo melhor instalado, como gawk, perl, python, etc.