Tengo una lista que se creó en /var/tmp/file.txt desde algún script (en la máquina Solaris). La siguiente lista tiene 4 campos.
Por favor indique cómo ordenar la lista de acuerdo con la siguiente MARCA DE TIEMPO (mediante el comando de clasificación u otro comando de Solaris como awk o sed...)
por ejemplo, la fecha y hora 15-10-2009 08:29:18 debería ser anterior al 15-10-2009 08:29:10... etc.
ejemplo de file.txt (archivo no ordenado)
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
Respuesta1
Como dije en un comentario, el formato de marca de tiempo hace que mi enfoque parezca complicado, pero es principalmente una repetición 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}'
- Omita las dos primeras líneas (solo un encabezado) y transforme las líneas restantes para usar un solo delimitador (guión en este caso, asegúrese de que no esté permitido aparecer en el último campo) (originalmente alterna entre espacios en blanco y guión, debido a el formato de fecha),
- dividir los campos con un guión y mover la fecha al principio de la línea (para facilitar su uso con
sort
) e imprimirla en formato descendente, - ordenar y
- Vuelva a imprimir la información en un formato similar a la entrada (intercambie
$1
y$3
obtenga el formato de fecha anterior).
Agregue las líneas del encabezado nuevamente después si las desea.
EDITAR: Vi que querías una ordenación inversa. Simplemente cambie sort
a sort -r
.