在“总计:”后以数字形式显示值

在“总计:”后以数字形式显示值

我的日志文件中有类似“...- 总速度:118.604 Mh/s,总份额:5....

我怎样才能 grep 最后 3 个“总速度”数值?

我尝试了以下命令:grep 'Total Speed: ' screenlog.0 | sed 's/^.*: //'但没有成功。

输出应如下所示:

118.604

118.604

118.604

答案1

我有这个简单的使用cutgrep命令:

cut -d: -f 2 mycut.txt | grep -Eo "[[:digit:]]{3}\.[[:digit:]]{3}"

答案2

最简单的方法是使用,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}'

答案3

你可以grep使用回顾与展望PCRE 的推动因素grep如下:

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

或者简而言之,你可以使用\Knotify代替lookbehind

grep -Pzo "Total Speed: \K.*(?=Mh/s)"

答案4

grep -Po 'Total Speed:\s*\K\d\S*' in.txt | tail -n 3

相关内容