linux - 从一行中提取多个 float

标签 linux bash awk grep

我想从以下行中提取 timeTaken 值:

<some other log data> Exception, Curl1-Time: 0.258315s. Curl2-Time: 3.9092588424683s Exiting.

我在 grepawk 中使用以下命令:

grep -Po "Exception, Curl1-Time: \K(\d+.\d*)s. Curl2-Time: (\d+.\d+)" app.log | awk '{print $1 + $3}'

输出:4.167565

  1. 能否以更智能的方式完成此操作,也许使用 sed 或任何其他方式 bash 工具。
  2. 可以忽略尾随的“s”吗?在时间上 加法结果的值是正确的。

最佳答案

您已经在使用 PCRE。为什么不使用 Perl 本身?

perl -lne 'print $1 + $2
           if /Exception, Curl1-Time: ([\d.]+)s\. Curl2-Time: ([\d.]+)/
          ' < input

关于linux - 从一行中提取多个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34851350/

相关文章:

Linux 阻塞 udp 套接字收不到

linux - 用于在 AWS s3 中部署的 Shell 脚本

Java 从 Linux 上的 Arduino Nano 读取 SerialPort 上的流

linux - 在 bash 中使用 cec-client 而无需重新连接

linux - 如何从第二行使用 awk '{print $1*Number}' 或告诉他忽略 NaN 值?

linux - 如何使用awk/sed增加文件中数字的匹配模式?

linux - 从多个进程追加到单个文件的 "Thread safety"?

json - 删除所有空值

linux - Bash脚本以相反的顺序复制编号的文件

linux - sed,替换第一行的第一次匹配