我的日志文件中有类似“...- 总速度:118.604 Mh/s,总份额:5....“
我怎样才能 grep 最后 3 个“总速度”数值?
我尝试了以下命令:grep 'Total Speed: ' screenlog.0 | sed 's/^.*: //'
但没有成功。
输出应如下所示:
118.604
118.604
118.604
答案1
我有这个简单的使用cut
和grep
命令:
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
或者简而言之,你可以使用\K
notify代替lookbehind
:
grep -Pzo "Total Speed: \K.*(?=Mh/s)"
答案4
grep -Po 'Total Speed:\s*\K\d\S*' in.txt | tail -n 3