Значение Grep как Число после “Общего количества”:

У меня есть строки в моем файле журнала как "...-Общая Скорость: 118,604 мГн/с, Общие Доли: 5...."

Как может я grep последние 3 "Общих Скорости" числовые значения?

Я попробовал следующую команду: grep 'Total Speed: ' screenlog.0 | sed 's/^.*: //' без успеха.

вывод должен быть похожим:

118.604

118.604

118.604

0
задан 13 August 2017 в 06:03

4 ответа

У меня есть это простое использование cut и grep команда:

cut -d: -f 2 mycut.txt | grep -Eo "[[:digit:]]{3}\.[[:digit:]]{3}"
1
ответ дан 2 November 2019 в 19:29

Самый простой способ - использовать awk, поскольку номер поля фиксирован.

awk '/Speed:/ {print $3}' screenlog.0

$3 - это номер столбца. Вы не указали полную строку, поэтому вам может потребоваться изменить это число.

pilot6@Pilot6:~$ echo "Total Speed: 118.604 Mh/s, Total Shares: 5...." | awk '/Speed:/ {print $3}'
118.604

Это даст вам все строки, а не последние 3. Вы можете использовать tail -n3 для фильтрации последних 3 строк:

tail -n3 screenlog.0 | awk '/Speed:/ {print $3}'
1
ответ дан 2 November 2019 в 19:29

Вы могли использовать grep с , оглядываются и предвидение активаторы PCRE в grep следующим образом:

tail -n3 in.txt | grep -Pzo '(?<=Total Speed: ).*?(?=Mh/s)'
118.604
118.604
118.604

Или короче говоря, можно использовать \K, уведомляют оперативный из lookbehind:

grep -Pzo "Total Speed: \K.*(?=Mh/s)"
1
ответ дан 2 November 2019 в 19:29
grep -Po 'Total Speed:\s*\K\d\S*' in.txt | tail -n 3
0
ответ дан 2 November 2019 в 19:29

Другие вопросы по тегам:

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