Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 35
1

Поиск и сравнение максимумов. Bash

25.02.2017, 01:04. Показов 1397. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Появился следующий вопрос. Допустим, есть файл log.txt, вида

XML
1
2
3
4
5
6
Pack date: elapsed time = 0.3 S, for anything
Pack date: elapsed time = 0.2 S, for something
*/something else*/
Form base: memory = 12 MB, ***
Pack date: elapsed time = 1 S, other words 
*/something else*/
Как можно найти в нем максимальное значение (число), стоящее после 'Pack date: elapsed time = ' и перед ' S' (в данном примере это число 1) ?

Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2017, 01:04
Ответы с готовыми решениями:

BASH: сравнение дат
задача: есть две переменные t1 и t2, типа дата_время. нужно выполнить сравнение: если t2 > t1,...

Поиск максимумов
Привет!!! У меня вопрос. У меня есть прога, которая сохраняет в текстовый фаил типа F= 2.256 ...

Поиск двух максимумов
В массиве записана информация о стоимости 30 видов товара. Определить стоимость двух самых дорогих...

Поиск n максимумов в матрице (снова)
Необходимо завести пустой временный массив. В цикле идти по элементам матрицы. Если очередной...

7
Эксперт NIX
3330 / 748 / 252
Регистрация: 28.06.2015
Сообщений: 1,543
Записей в блоге: 16
25.02.2017, 09:00 2
Bash
1
awk -F'=|S' '/\d/ {if($2 > a) a = $2} END {print a }' log.txt
0
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 35
25.02.2017, 11:55  [ТС] 3
Здравствуйте. На приведенных данных вывело следующее:
XML
1
 12 Mb, ***
Добавлено через 14 минут
Прошу прощения, именно на приведенных данных работает, но ведь такой лог не статичен, и добавь я лишних символов и строк, например, так
XML
1
2
3
4
5
6
7
8
9
Pack date: elapsed time = 0.3 S, for anything
Pack date: elapsed time = 0.2 S, for something
/*something else*/
Pack date: elapsed time = 0 S, for something
Form base: memory = 12 Mb, *** dsa dasdSADkaSLdk 
 /*something else*/
Pack date: elapsed time = 1 S, other words
/*something else*/
/*something else*/
ответ уже выглядит так

XML
1
12 Mb, *** dsa dasd
Можно как-то обобщить этот код, если я точно знаю, что слева должно стоять словосочетаниe "elapsed time = ", а справа " S" ?

Добавлено через 54 минуты
И еще уточнение: возможно ли не просто вывести это значение, а записать его в переменную в bash'e, учитывая, что число, в общем случае, с плавающей точкой?
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,873
25.02.2017, 13:40 4
этот однострочник
Bash
1
perl -lne '/(\S+) = (\S+)/ and do{ $MAX{$1}=$2 if $2>$MAX{$1} }; END{ printf "%f", $MAX{time} }'
выведет макс. time;
заменив на $MAX{memory} - выведет макс. memory.

соответственно
Bash
1
tm = $( perl -lne '/(\S+) = (\S+)/ and do{ $MAX{$1}=$2 if $2>$MAX{$1} }; END{ printf "%f", $MAX{time} }' )
положит результат в bash-переменную tm
1
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
25.02.2017, 13:41 5
Лучший ответ Сообщение было отмечено wator как решение

Решение

Цитата Сообщение от wator Посмотреть сообщение
записать его в переменную в bash'e
Можно
Цитата Сообщение от wator Посмотреть сообщение
число, в общем случае, с плавающей точкой
bash работает с целыми числами или строками
Bash
1
read tm < <(sed -n '/.*elapsed time = /{s///;s/ S/\n/;P; }' log | sort -gr)
1
Эксперт NIX
3330 / 748 / 252
Регистрация: 28.06.2015
Сообщений: 1,543
Записей в блоге: 16
25.02.2017, 14:14 6
wator,Извиняюсь дико
Bash
1
awk -F'=|S' '$2 == /\d+/ {if($2 > a) a = $2} END {print a }' log.txt
1
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
25.02.2017, 15:45 7
nezabudka,
Bash
1
awk -F'= | S' '/elapsed time = [0-9.]+ S/ {…
2
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 35
25.02.2017, 17:01  [ТС] 8
Marinero, nezabudka, volodin661,
Большое спасибо!
0
25.02.2017, 17:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2017, 17:01
Помогаю со студенческими работами здесь

Массив. Поиск локальный максимумов
Посодействуйте пожалуйста в написании программы на Pascal. Задание: В массиве A(n) найти и...

Поиск локальных максимумов двухмерного массива
Дан двухмерный массив 20x20 целочисленных элементов. Найдите все локальные максимумы. (Элемент...

Поиск локальных максимумов в двумерном массиве
Задача: Дан двухмерный массив 20 × 20 целочисленных элементов.Найдите все локальные максимумы....

Ошибка в коде, поиск минимума из максимумов
Или подскажите в чем я ошибаюсь... Суть задачи: 1) задаем размерность матрицы, 2)задаем элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru