сортировать шестнадцатеричные числа различной длины из командной строки? - PullRequest
3 голосов
/ 16 февраля 2011

Если у меня есть файл с шестнадцатеричными числами разной длины, например,

1F
b
c

Как мне отсортировать их из командной строки?

Linux-решения приветствуются, хотя я буду использовать windows и cygwin или gnuwin32.

Примечание: я явно не могу использовать SORT, потому что он будет держать их в том порядке, что неверно.

Ответы [ 3 ]

6 голосов
/ 16 февраля 2011
cat thefile | while read line; do printf "%d %s\n" "0x$line" "$line"; done | sort -n | awk '{print $2}'

Сохраняет исходный верхний / нижний регистр шестнадцатеричных чисел.

0 голосов
/ 16 февраля 2011

Вы можете использовать сценарий awk, чтобы создать файл, который вставляет в строку строки фиксированной длины, сортирует полученный файл, а затем удаляет начальные пробелы в результате.

Прошло много времени с тех пор, как яиспользовал awk, но, насколько я помню, было не сложно вывести все правильно.

0 голосов
/ 16 февраля 2011

Попробуйте sort -n filename. Флаг -n на странице руководства "сравнить по числовому значению строки".

Обновление: как указано @barlop, опция -n не работает для шестнадцатеричных чисел.

...