Если я правильно интерпретирую, вы, вероятно, сможете сделать то, что пытаетесь сделать, просто awk
иsort
-без необходимости в цикле или синтаксический анализ ls(тонкий намек:НЕ ДЕЛАЙТЕ ЭТОГО! ), или head
, или sed
.
awk 'FNR > 1 {print FILENAME, $0}' *.txt | sort -k10 -g | sort -u -k1,1
Это пропускает первую строку каждого файла, затем печатает все оставшиеся строки с префиксом имени файла и пробелом. (Разделитель выходных записей awk по умолчанию илиORS
). Затем он передает его через сортировку, чтобы выполнить общую числовую сортировку по полю 10. Наконец, он выполняет уникальную сортировку только первого поля (-k1,1
, имени файла ), так что выводится только первая строка с этим именем файла.
Обратите внимание, что здесь мы должны сортировать по полю 10, а не по полю 9, потому что мы добавили имя файла в качестве первого поля, поэтому номера всех остальных полей увеличиваются на 1.
FNR
и FILENAME
построены -в переменных awk. FNR — это номер строки («номер входной записи» в awk -жаргоне )текущего файла, а FILENAME — это имя текущего файла.
вот еще один способ сделать это, на этот раз используя толькоawk
:
#!/usr/bin/awk -f
FNR > 1 && (! s[FILENAME] || $9 < s[FILENAME]) {
s[FILENAME]=$9;
l[FILENAME]=$0
};
END {
for (f in s) {
print f, l[f]
}
}
сохранить как, например. smallest-pvalue.awk
, сделайте его исполняемым с помощью chmod +x smallest-pvalue.awk
и запустите как ./smallest-pvalue.awk *.txt
.
Этот awk-скрипт отслеживает наименьшее значение поля 9 каждого входного файла в массиве с именем s
, а также сохраняет соответствующую входную строку в массиве l
.
После обработки всех файлов он выводит имя файла и строку, содержащую наименьшее 9-е поле для каждого файла.
Legrand не использует ttyUSB
, в настройках upssrv
выберите «USB».
Я использую UPS Communicator 1.32, но он имеет ошибку для версии Linux и не может правильно инициализировать подключение к ИБП.
Решение:
Теперь вы можете остановить виртуальную машину и запустить upssrv
на Debian -все будет работать нормально, пока вы не отключите USB-кабель или не перезагрузите компьютер.