2017-11-27 20:11:13,632 INFO abc: [java: Thread-389579]: Completed executing command
2017-11-27 20:11:13,632 INFO abc: [java: Thread-389579]: OK
2017-11-27 20:11:13,632 INFO abc: [java: Thread-389579]: <completed>
2017-11-27 20:11:13,632 INFO abc: [java: Thread-389579]: release for adeo/student
Minhas abordagens:
awk 'today="$(date +'%Y-%m-%d')" ( = today) && /Completed executing command/ {cnr = NR} NR == (cnr+3) {gsub(/\/.*/,"",$NF); print $NF}' filename
awk 'today="$(date +'%Y-%m-%d')" ( == today) && /Completed executing command/ { cnr = NR } NR == (cnr+3) { sub("/.*","",$NF); print $NF }' filename
Queremos imprimir apenas adeo e student em duas variáveis diferentes. Condição é se $ 1 é igual a data atual, então deve procurar Completed executing command no arquivo inteiro e, em seguida, pular duas linhas e, em seguida, imprimir adeo e student . (O nome adeo / aluno não é fixo muda, por isso, no caso acima, queremos adeo e aluno, mas se houver algum outro nome, que deve aparecer em seu lugar).
Da nossa abordagem, estamos recebendo apenas adeo . Como podemos conseguir isso usando awk / sed / grep ou qualquer outra ferramenta?