Есть ли драйвер для считывателя отпечатков пальцев 138a:00ab Validity Sensors, Inc.?

У меня недостаточно репутации, чтобы комментировать, поэтому я вынужден ответить ответом. Мой первый комментарий был бы о том, что awk — не лучший инструмент для математики с действительными числами. Это лучше для строк и целых чисел.

Другие моменты в awk :Параграф BEGIN происходит до того, как какие-либо строки будут прочитаны из вашего ввода. Параграф END происходит после прочтения всех строк.

Примечание. :awk не сохраняет и не заботится ни о чем, кроме текущей строки/записи ввода,если вы не предпримете шаги для хранения записей/полей в своем коде. Это должно произойти между BEGIN и END.

Ваш код между этими абзацами только устанавливает/сбрасывает переменные, но ничего не делает с их значениями. По сути, вы могли бы «закрепить» -1 входной файл и направить вывод в cut, чтобы добиться аналогичных результатов.

Похоже, вы намеревались проверить число в столбце 4, чтобы найти max или max1, и вывести столбец 1 только в том случае, если столбец 4 содержит этот максимум, после чего следует успешная проверка столбцов 2 и 3. Эту логику необходимо переместить перед END, если только вы не заботитесь только о последней строке файла.

Помните, что в awk каждая строка ввода (по умолчанию )сравнивается с каждым условием. Если условие истинно, выполняется действие или список действий. Вполне возможно, что несколько условий запускают действия в одной и той же строке.

Мое первое впечатление, что вам нужно -переоценить свой процесс. Определите порядок важности и примите соответствующие меры. Например, для меня первый порядок важности воздействует только на данные между двумя флагами в моем входном файле. Затем определите, могут ли действительные числа в каждом из 4 полей быть преобразованы в (или обработаны как )целые числа (или строки )без потери их значения. Сами фактические данные не нужно менять, только их представление в вашем коде. Их можно преобразовать обратно, но вероятность потери точности исходного числа высока. Наконец, выберите, нужно ли вам сохранять все/любые из этих несортированных, случайных данных для последующей обработки или выдавать немедленный вывод построчно.

Следующий мета-пример можно было бы сделать намного эффективнее... Начните с флага, чтобы вы знали, пора ли начать синтаксический анализ. Вы уже видели строку $0 ~= /Nodes/? старт=0.Вы также можете подготовиться к тому, чтобы знать, когда прекратить синтаксический анализ данных, проверив строку $0 ~= /EndNodes/, stop=0. И вам может понадобиться счетчик, если вы храните данные, count=0.

BEGIN {
   start=0
   stop=0
   count=0
   max=0
}
/EndNodes/ {
   stop=1
}
/Nodes/ {
   start=1
}
NF==4 {
   if (start==1 && stop==0) {
      count++
      column1[count]=$1
      column2[count]=substr($2,1,index($2,".")-1)
      column3[count]=substr($3,1,index($3,".")-1)
      column4[count]=substr($4,1,index($4,".")-1)
   }
}
# Now print column1 if column2 is non-negative and column3=0 and column4=max
# In the first loop through the array/list, find max
END {
   for (loop=1;loop<=count;loop++) {
      if (column4[loop]>max) {
         max=column4[loop]
      }
   }
   for (loop=1;loop<=count;loop++) {
      if (column4[loop]==max && column3[loop]==0 && column2[loop]>=0) {
         print column1[loop]
      }
   }
}

Как написано, вывод будет

20
31
32
1
11.12.2019, 01:52
1 ответ

В настоящее время драйвер Linux для этого устройства отсутствует.

Вы можете следить за этим по этим двум ссылкам:

3
27.01.2020, 23:29

Теги

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