O comando unix date
pode imprimir datas no formato que você quiser. Usando o sinalizador --date
, você pode imprimir uma data e hora diferentes da data e hora atuais. No entanto, para o comando date
analisar a data, você deverá remover o on na sua data de entrada. Você pode usar o seguinte comando sed:
sed -r 's,\s+on\s+, ,g'
Combinado com o formato de saída desejado, você obtém:
date --date="$(echo '22:06:58 on 2017-12-22' | sed -r 's,\s+on\s+, ,g')" '+%r on %B %d, %Y'
Agora, você só tem que combinar isso com seu comando awk, o que pode ser feito facilmente, supondo que você sempre tenha o mesmo formato "nome de usuário logado na data" . Note que você pode ter o on não impresso a partir de awk
, então a chamada sed
não é mais necessária:
while read line
do
echo $line | awk '{print $1" "$2" "$3" "$4" "}' | tr -d '\n'
date --date="$(echo $line | awk '{print $5" "$7}' | tr -d '.')" '+%r on %B %d, %Y'
done
Para o exemplo que você deu, isso é impresso (com locale en-NZ
):
nickname logged in at 10:06:58 PM on December 22, 2017