Question

Si j'ai un fichier de numéros hexadécimaux de longueur différente, par exemple

1F
b
c

Comment puis-je les trier à partir de la ligne de commande?

Les solutions Linux sont les bienvenues, mais j'utiliserai Windows et Cygwin ou Gnuwin32.

Remarque: je ne peux clairement pas utiliser Sort 'Cos qui les gardera dans cet ordre, ce qui est faux.

Était-ce utile?

La solution

cat thefile | while read line; do printf "%d %s\n" "0x$line" "$line"; done | sort -n | awk '{print $2}'

Cela conserve les nombres hexadécimaux supérieurs / inférieurs d'origine.

Autres conseils

Vous pouvez utiliser un script awk pour créer un fichier qui gauche pad les chaînes sur une longueur fixe, trier le fichier résultant, puis dépouiller les espaces de tête du résultat.

Cela fait un moment que je n'ai pas utilisé AWK, mais si je me souviens bien, il n'était pas difficile de sortir les choses justifiées.

Essayer sort -n filename. La -n Flag en fonction de la page Man "Comparez en fonction de la valeur numérique de chaîne".

Mise à jour: comme indiqué par @barlop, le -n L'option ne fonctionne pas pour les numéros hexadécimaux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top