首页 > 解决方案 > 如何使用sed提取一个浮点数

问题描述

我需要从位于常量 1 旁边的文件 A 中读取一个浮点数,如下所示

constA \t 3.1415; //some comments

我试过了,但不知道如何在所需的数字之后删除其余的东西

#value=$(sed -En 's/constA[[:blank:]]+//p' fileA)

因此命令正在读取

3.1415; //some comments

我只需要

3.1415

完成:它正在使用以下行代码

value=$(sed -En 's/constA[[:blank:]]+//p' fileA | sed 's/;.*//')

标签: filesedinsertfloating-pointnumbers

解决方案


您可以使用

value="$(sed -En 's/constA[[:blank:]]+([0-9][0-9.]*).*/\1/p' <<< "$s")"

查看在线演示

细节

  • -En-E启用 POSIX ERE 语法并n禁止默认行输出
  • constA[[:blank:]]+([0-9][0-9.]*).*模式匹配:
    • constA- 一个子串
    • [[:blank:]]+- 1+ 水平空白
    • ([0-9][0-9.]*)- 第 1 组:一个数字,然后是任何 0+ 个点或数字
    • .*- 字符串的其余部分。

\1将在结果中保留 Group 1 值。


推荐阅读