У меня есть строки в моем файле журнала как "...-Общая Скорость: 118,604 мГн/с, Общие Доли: 5...."
Как может я grep последние 3 "Общих Скорости" числовые значения?
Я попробовал следующую команду: grep 'Total Speed: ' screenlog.0 | sed 's/^.*: //'
без успеха.
вывод должен быть похожим:
118.604
118.604
118.604
У меня есть это простое использование cut
и grep
команда:
cut -d: -f 2 mycut.txt | grep -Eo "[[:digit:]]{3}\.[[:digit:]]{3}"
Самый простой способ - использовать 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}'
Вы могли использовать 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)"