如何使grep输出排除字母

时间:2017-06-12 01:42:22

标签: unix grep tail

在日志中有诸如

之类的行
20:01:59:008    46ffd700        ETH - Total Speed: 126.291 Mh/s, Total Shares: 33, Rejected: 0, Time: 00:09

我想用grep& tail以获取包含"ETH - Total Speed"的最新行,但只想输出126.291

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我们想说我们要在最后20行中输出第一个匹配的" ETH - Total Speed" *值,并在文件增长时执行此操作:

$null_value = "\n";

结果应打印如下:

tail -f -n 20 logfile | grep --line-buffered -Po -m 1 'ETH - Total Speed: \K\S+(?= Mh/s)'

详细

  • 126.291 - 在输出上使用行缓冲。这可能会导致性能下降
  • --line-buffered - 启用 PCRE

  • -P - 在第一条匹配的行

  • 之后停止阅读该文件