Será mais fácil se as datas estiverem em YYYYMMDD
(então elas estarão em ordem lexicográfica e numérica). Você pode usar gensub
para isso no awk. Por exemplo:
awk -F"|" -v d="$d" -v dp='(..)/(..)/(....)' 'BEGIN {gensub(dp, "", d)} {dt=$5; gensub(dp, "", dt);} dt >= d' foo
A variável d
contém a data para comparação e dp
mantém o padrão correspondente a DD/MM/YYYY
date. Então, com gensub
, nós movemos em torno desses ( ,
,
sendo os grupos correspondentes (
(....)
, o segundo (..)
, o primeiro (..)
, respectivamente). campo de cada linha, que copiamos para evitar modificar a entrada.
Eu expandi sua entrada de exemplo com mais algumas datas:
1099511628908|Chen|Wei|female|02/08/1989|2010-05-24T20:52:26.582+0000|27.98.244.108|Firefox
1099511633435|Smith|Jack|male|19/04/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1979|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1977|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1980|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/03/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
E recebi esse resultado usando 19/04/1978
para comparação:
1099511633435|Smith|Jack|male|19/04/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1979|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1980|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer