Eu tenho uma lista criada em /var/tmp/file.txt a partir de algum script (na máquina Solaris). A lista a seguir possui 4 campos
por favor, informe como classificar a lista de acordo com o seguinte TIMESTAMP (por comando sort ou outro comando solaris como awk ou sed .....)
por exemplo, a data e hora 15-10-2009 08:29:18 deve ser anterior a 15-10-2009 08:29:10 ... etc.
exemplo de arquivo.txt (arquivo não classificado)
PHONE_NUMBER TIMESTAMP ID TYPE
-------------------- ------------------- ---- --------------
972544111222 15-10-2009 08:29:18 20 sharp_gx10
33633333333 24-09-2009 16:17:45 20 other_mm_phone
841990000043 08-10-2009 09:04:38 60 other_mm_phone
972541230001 08-10-2009 14:23:48 20 other_mm_phone
Responder1
Como eu disse em um comentário, o formato do carimbo de data/hora faz minha abordagem parecer complicada, mas é principalmente uma repetição mecânica.
awk 'NR>2 {print $1"-"$2"-"$3"-"$4"-"$5}' file.txt |\
awk -F'-' '{print $4"-"$3"-"$2"-"$5"-"$1"-"$6"-"$7}' |\
sort |\
awk -F'-' '{print $5"\t"$1"-"$2"-"$3" "$4"\t"$6"\t"$7}'
- Pule as duas primeiras linhas (apenas um cabeçalho) e transforme as linhas restantes para usar um único delimitador (traço neste caso, certifique-se de que não é permitido aparecer no último campo) (originalmente ele alterna entre espaço em branco e traço, por causa de o formato da data),
- divida os campos com traço e mova a data para o início da linha (para facilidade de uso com
sort
) e imprima em formato decrescente, - classificar e
- imprima as informações em um formato semelhante ao de entrada (troque
$1
e$3
obtenha o formato de data antigo).
Adicione as linhas de cabeçalho novamente posteriormente, se desejar.
EDITAR: Vi que você queria uma classificação reversa. Basta mudar sort
para sort -r
.