Печатать только строки с наивысшим значением [дубликат]

Очень краткий обзор слоев ввода:

Ваша клавиатура каким-либо образом подключена к ПК, например, через USB или порт PS/2.Драйверы ядра для этого механизма знают, как обрабатывать связь при нажатии клавиши на клавиатуре.

Для клавиатуры USB существует стандарт под названием HID (Human Interface Device). Это касается не только клавиатур, но и мышей, джойстиков и других устройств ввода. Таким образом, устройство будет иметь дескриптор, сообщающий ядру, какие сигналы оно может излучать, и многие коды для клавиш, включая отключение звука, стандартизированы.

Тем не менее, некоторые клавиатуры имеют нестандартизированные клавиши (например, Fn на некоторых клавиатурах), и производитель сам определяет, как он сигнализирует об этих клавишах.

В ядре есть специальный уровень для работы с HID-устройствами. Этот уровень делает необработанную коммуникацию HID доступной по адресу /dev/hidrawX, а затем продолжает преобразовывать события HID в события ввода ядра.

Уровень ввода ядра принимает коды сканирования (числа, соответствующие физическому ключу, уникальному для устройства) и преобразует их в коды ключей (числа, соответствующие логическим ключам, стандартизированным для всех устройств). устройства). Оба доступны как события на /dev/input/eventX. Вы можете использовать evdev, чтобы увидеть эти события, и showkey, dumpkeys и т. д., чтобы увидеть таблицу перевода.

X-сервер (или Wayland) считывает все эти события и переводит их в ключевые символы (например, a, á и т. д. или специальные например AudioMute).Приложения X могут получать эти символы и действовать соответствующим образом. Вы можете использовать приложение see xev, чтобы увидеть этот слой, и настроить его с помощью xmodmap и спецификации xkbd в вашем xorg.conf.

Чтобы отреагировать на AudioMute, для этого требуется приложение. Часто это Window Manager, но если ваш Window Manager этого не делает, сработает и отдельное приложение.

Таким образом, нет единого «драйвера клавиатуры», это намного сложнее, и нет специального вызова для «отключения звука».

0
07.03.2018, 13:16
3 ответа

El más corto con GNUdatamash:

datamash -sW -g1 max 2 <file
  • -s-ordenar la entrada antes de agrupar
  • -W-use espacios en blanco (uno o más espacios y/o tabuladores )para delimitadores de campo
  • -g 1-grupo a través del primer campo
  • max 2-operación numérica para obtener el valor máximo del 2do campo por grupo

La salida:

host1   222
host2   90
host3   8
5
28.01.2020, 02:13

Con GNU sorto compatible:

<input.txt sort -k2rn | sort -sbuk1,1 >output.txt
6
28.01.2020, 02:13

Aquí está el transatlántico -:

$ awk '{if (a[$1] == "" || $2 > a[$1]) a[$1] = $2} END { for (k in a) print k, a[k] }' < input.txt
host1 222
host2 90
host3 8

$1y $2son ​​los primeros dos campos de la línea, la matriz asociativa a[k]contiene el máximo actual para la clave k. Con la prueba contra a[$1]vacía, debería tratar correctamente los números negativos.

4
28.01.2020, 02:13

Теги

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