tac
+ grep
:
tac input.txt | grep -Eo -m1 '^[0-9]{4}(-[0-9]{2}){2} [0-9]{2}(:[0-9]{2}){2}' > last_date.txt
Eu tenho um arquivo de texto com esta aparência:
Start find in flight queries
2018-03-05 15:50:02,069:INFO:######################################
Start find completed queries
2018-03-05 15:50:02,070:INFO:Starting new HTTPS connection (1): server060
2018-03-05 15:50:02,083:DEBUG:"GET /queries?json HTTP/1.1" 401 0
2018-03-05 15:50:02,084:INFO:Resetting dropped connection: server060
2018-03-05 15:50:02,095:DEBUG:"GET /queries?json HTTP/1.1" 200 19059
2018-03-05 15:50:02,099:INFO:######################################
Start find in flight queries
A data e a hora mudam a cada 5 minutos. Preciso copiar a data e a hora da última última para outro arquivo. Neste exemplo, é 2018-03-05 15:50:02. Qualquer sugestão é apreciada. Eu usei um pouco de regex no passado, mas não é bom nisso.
Usando awk sem canos;)
awk -F'[ ,]' '
/^[0-9]{4}-[0-9]{2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}/
{var=$1" "$2}
END{print var}
' file
Tags linux regular-expression rhel