Tente
awk -vDate="'date -d'TZ="UTC" now-10 minutes' +'%Y-%m-%d %H:%M:%S.%3N''" '$1" "$2 > Date {print Date, $0}'
No padrão $1,$2 > Date
, a vírgula não significa "unir esses campos" como na saída; Em vez disso, significa que o padrão é um intervalo de registros . $1
é uma string não vazia, que é sempre true
, portanto a correspondência é iniciada imediatamente. Você precisa colocar um espaço literal lá para juntar os campos antes de comparar: $1" "$2
Em seguida, você pode ver na saída do seu exemplo que estava definindo Date
para "2016/06/02: ...", enquanto os registros usavam "2016-06-02 ...". Como você está comparando strings de data , e /
é posterior a -
em ASCII, o teste nunca seria bem-sucedido. Alterar o formato da string para corresponder exatamente (com algumas citações adicionadas para protegê-lo do shell) significa que apenas os dígitos serão diferentes.
Editar:
Os registros de data e hora do seu arquivo de log são algumas horas depois do que o date -d'now-10 minutes'
mostra. Você pode dizer a date
para usar o fuso horário relevante com uma variável de ambiente ( TZ=UTC awk ...
) ou dentro da string de data 'TZ="UTC" now...'
. Se não for UTC
, escolha a correta de a lista completa .