Estou usando o awk com uma variável para cortar arquivos de log com base em um carimbo de data/hora:
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ;
Se a data ainda existir no arquivo de log, funcionará, mas se o arquivo de log tiver sido arquivado e substituído por um arquivo novo awk
, falhará.
Eu quero voltar para cat $log_file
se awk
falhar:
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ; \
|| cat $log_file
Mas essa sintaxe retorna syntax error near unexpected token ||
.
A linha acima não é uma função normal que posso usar &&
ou ||
depois?
A questão está
; ||
emO
;
termina aawk
invocação e o próximo comando começa com||
, o que é um erro de sintaxe.O que você quer fazer é verificar se
y
não é 1 no final da análise do arquivo de log e, nesse caso,awk
retornar um status de saída diferente de zero:Sem o explícito
exit
, você só obterá um status de saída diferente de zeroawk
se algum tipo de erro ocorrer.Nos comentários, vemos claramente a maneira de corrigir/ajustar o comando PO. Seguindo uma abordagem ligeiramente diferente do gnu-Awk:
$0 ~ L
pode ser mais específica (ex$1 <= L
ou$1 == L
)