Мне нужно получить номер строки с наибольшим значением

Я вижу пару вариантов. Один из них - это жестокий вариант, который может быть подходящим для системы без сохранения состояния, которую невозможно повредить. То есть добавить параметр - force в poweroff

poweroff --force

В документации для него сказано: «Принудительная немедленная остановка, выключение питания, перезагрузка. Не связывайтесь с системой инициализации».

Другие службы продолжат запускаться параллельно, но отключение питания должно происходить быстрее.


Вы наблюдаете такое поведение, потому что systemd пытается загрузить вашу систему как можно быстрее , делая как можно больше параллельно. Это означает, что он перемещает к следующей задаче, как только выполняется зависимость, не обязательно, когда служба завершает работу.

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

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

3
17.01.2017, 14:44
3 ответа

После копирования и вставки вашего примера я сделал это с помощью:

sort -k2 -nr filename.txt | head -1
2
27.01.2020, 21:18

Я сделал это с помощью sort -rn -k2 test , где test - это имя файла, содержащего данные вашего примера.

12 10.20
7 7.84
8 7.95
1 8.92
13 9.35
9 9.44
6 9.51
3 9.57
5 9.57
10 9.58
4 9.63
11 9.94
2 9.99

И вы можете получить номер строки с помощью:

sort -rn -k2 test | awk '{print $2}' | grep $(head -1) -n test

output:

12:12 10.20
0
27.01.2020, 21:18

Чтобы избежать сортировки, вы можете сделать:

awk 'NR == 1 || $2 > max {number = $1; max = $2}
     END {if (NR) print number, max}' < file

или, если входные данные содержат только один столбец, и вы хотите узнать номер строки с максимальным значением:

awk 'NR == 1 || $1 > max {number = NR; max = $1}
     END {if (NR) print number, max}' < file
3
27.01.2020, 21:18

Теги

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