Usando coreutils sort
, ¿cómo puedo ordenar numéricamente por un valor hexadecimal (campo)? Estaba esperando algo en la línea de
sort -k3,3x file_to_sort
sin embargo, tal x
no existe.
Editar: La mejor solución que se me ocurrió hasta ahora es:
{ echo ibase=16; cut -d' ' -f3 file_to_sort; } |
bc | paste -d: - file_to_sort | sort -t: -k1,1n | cut -d: -f2-
donde cut -d' ' -f3
aísla el campo de búsqueda (esto es -k3,3
, esto puede variar, por supuesto), y bc
realiza la conversión a decimal (requiere mayúscula hexadecimal, sin 0x
prefijo, que coincida con mi caso). Luego unir, ordenar y dividir columnas.
-k3,3
? ¿Tienes nubers hexagonales mirando con 0x y todos de la misma longitud? No hay mezcla de mayúsculas / minúsculas? En caso afirmativo, deben ordenar correctamente cuando se interpretan como cadenas. ¿Quizás pueda mostrarnos algunos datos de ejemplo?