regex - 使用 bash 和正则表达式获取字符串中的数字

标签 regex bash ubuntu

我需要在包含以下字符串的 ascii 文件中获取 score 后面的数字:

iteration 32: score=0.126462


我想用 bash 来做。
所以输出应该是:

0.126462


我知道我必须使用正则表达式,但是我对它不是很熟悉,几个小时后我无法解决我的问题。
谢谢

编辑:不幸的是,有些解决方案对我不起作用,因为我不是在某个变量中硬编码字符串,而是在管道中传递。

cat kMeans.init-1.log | tail -2 | head -1 | CODE_SHOULD_GO_HERE

最佳答案

纯 bash 解决方案。

$ [[ "iteration 32: score=0.126462" =~ score=([0-9.]+) ]] && echo ${BASH_REMATCH[1]}
0.126462

通过grep,
$ echo 'iteration 32: score=0.126462' | grep -oP 'score=\K[\d.]+'
0.126462

关于regex - 使用 bash 和正则表达式获取字符串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452298/

相关文章:

bash - 在超时情况下运行时获取管道中第一个命令的状态

android - 回显到现有文件

debugging - Ubuntu 即时调试

docker -/etc/rc* 未在 Docker 中的 Ubuntu 18.04 上运行。启动时无法启动 cron

JavaScript,简单 : make global

java - 在正则表达式中排除空格,但保留下划线和连字符

python - 正则表达式单词在字符串中出现两次

使用正则表达式的 SQL 电子邮件验证功能

linux - 在文件中搜索字符串,然后打印以该字符串开头的行

ubuntu 11.10 中的 PHP 服务器错误