вид шестнадцатеричным значением

Это - технически только предупреждение (W). Если Вы на самом деле не используете ту часть своих аппаратных средств и не замечаете недостающей функциональности, то это не действительно проблема.

Графическим драйверам на самом деле не нужны те микропрограммные файлы, это просто, что пакеты модуля ядра в Debian инициируют общую проверку, которая, оказывается, ищет ту проблему. Это не характерно для тех графических драйверов - это - просто побочный эффект того, как обрабатываются модули ядра.

Как dartonw сказал, это обычно решается путем установки одного из микропрограммных пакетов. В Debian, rtl8168f-1.fw обеспечивают firmware-realtek, но в BackTrack и Ubuntu, этим обеспечивают linux-firmware. Попытайтесь установить один из тех пакетов на основе Вашего дистрибутива, и надо надеяться он устранит проблему.

14
29.06.2014, 22:26
4 ответа

Решение в perl:

$ perl -anle '
    push @h, [$F[-1],$_];
    END {
        print for map  { $_->[0] }
                  sort { $a->[1] <=> $b->[1] }
                  map  { [$_->[1],hex($_->[0])] } @h;
    }
' file
4 jjk 7
5 hhf 25
2 ukr 9f
3 ezh ae
1 hdh d12

Объяснение

  • В процессе обработки файла мы создаем массив массива @h, каждый его элемент является ссылкой на массив [$F[-1],$_], при этом первый элемент является шестнадцатеричным значением для сравнения, а второй элемент - целой строкой.

  • В блоке END мы используем Шварцовое преобразование:

    • С каждым элементом @h создаем анонимный массив, содержит всю строку ( $_->[1] второй элемент каждой ссылки на массив в @h) и значение гекса для сравнения hex($_-). >[0])]

    • Сортируем вышестоящую базу массива по шестнадцатеричному значению $a->[1] <=> $b->[1]

    • Получим первый элемент каждого массива ref в отсортированном массиве map { $_->[0] }. затем распечатайте результат.

Обновление

С предложением @Joseph R, без использования преобразования Шварцяна:

$ perl -anle '
    push @h, [hex($F[-1]),$_];
    END {
        print $_->[1] for
            sort { $a->[0] <=> $b->[0] } @h;
    }
' file

Обновление 2

После прочтения комментария Стефана, я думаю, это может вызвать direct:

$ perl -e '
    print sort {hex((split(/\s+/,$a))[-1]) <=> hex((split(/\s+/,$b))[-1])} <>;
' file
4 jjk 7
5 hhf 25
2 ukr 9f
3 ezh ae
1 hdh d12
5
27.01.2020, 19:51

Я использую этот пример данных:

1 hdh d12
2 ukr 9f
3 ezh ae
4 jjk 7
5 hhf 25

Идея состоит в том, чтобы создать новую версию этих данных с полем сортировки в десятичной форме. Т.е. awk преобразует его, подставляет к каждой строке, результат сортируется, и на последнем шаге добавляемое поле удаляется:

awk '{val="0x" $3; sub("^0x0x","0x",val); print strtonum(val),$0 ;}' file | 
  sort -n | 
  sed 's/^[^ ]* //'

Что приводит к такому выводу:

4 jjk 7
5 hhf 25
2 ukr 9f
3 ezh ae
1 hdh d12
6
27.01.2020, 19:51

адаптировано из: http://www.unix.com/302548935-post6.html?s=b4b6b3ed50b6831717f6429113302ad6

:file-to-sort:

6F993B
954B29
A23F2F
BFA91D
C68C15
8F322F
5A6D40
6D512C
9D9D63
B4B823
A0641C
A79716
A18518

Команда:

awk '{printf("%050s\t%s\n", toupper($0), $0)}' file-to-sort | LC_COLLATE=C sort -k1,1 | cut -f2

Вывод:

C68C15
BFA91D
B4B823
A79716
A23F2F
A18518
A0641C
9D9D63
954B29
8F322F
6F993B
6D512C
5A6D40

--где toupper($0) "обновляет" строчные буквы, чтобы они сортировались первыми (хотя не уверен, что это необходимо?)

1
27.01.2020, 19:51

Вход

$ cat /tmp/input
0x45 aaa 333
0x50 dd 33
0x4 bbbb 444
0x456 cc 22
0x5 eee 1111

Сортировка одного вкладыша

$ gawk  --non-decimal-data '{ dec = sprintf("%d", $1); print dec " "  $0 }' /tmp/input | sort -n -k 1 | cut -f2- -d' '
0x4 bbbb 444
0x5 eee 1111
0x45 aaa 333
0x50 dd 33
0x456 cc 22

Пошаговая сортировка

Шаг 1 :Добавьте новый первый столбец с десятичным представлением шестнадцатеричного числа.

$ gawk  --non-decimal-data '{ dec = sprintf("%d", $1); print dec " "  $0 }' /tmp/input 
69 0x45 aaa 333
80 0x50 dd 33
4 0x4 bbbb 444
1110 0x456 cc 22
5 0x5 eee 1111

Шаг 2 :Отсортируйте строки по цифрам в первом поле.

$ gawk  --non-decimal-data '{ dec = sprintf("%d", $1); print dec " "  $0 }' /tmp/input | sort -n -k 1
4 0x4 bbbb 444
5 0x5 eee 1111
69 0x45 aaa 333
80 0x50 dd 33
1110 0x456 cc 22

Шаг 3 :Удалите первый столбец.

$ gawk  --non-decimal-data '{ dec = sprintf("%d", $1); print dec " "  $0 }' /tmp/input | sort -n -k 1 | cut -f2- -d' '
0x4 bbbb 444
0x5 eee 1111
0x45 aaa 333
0x50 dd 33
0x456 cc 22
3
27.01.2020, 19:51

Теги

Похожие вопросы