【问题标题】:How to take first numbers and ignore the rest using sed如何使用 sed 获取第一个数字并忽略其余数字
【发布时间】:2022-10-21 20:15:05
【问题描述】:

我有这行代码。 sed 占用 10 和 5。如何提取 10 并忽略 5?

$ NUMBER=$(echo "The food is ready in 10mins and transport is coming in 5mins." | sed 's/[^0-9]*//g') ; echo $NUMBER

【问题讨论】:

    标签: bash shell


    【解决方案1】:

    你只是删除了所有不是数字的东西,所以留下了5

    相反,使用捕获组来捕获第一个数字,并在替换中使用它。

    sed 's/^[^0-9]*([0-9]*).*//'
    

    在正则表达式中:

    • ^ 匹配行首
    • [^0-9]* 匹配行首的所有非数字
    • () 包围一个捕获组
    • [0-9]* 匹配数字。这些是在组中捕获的
    • .* 匹配该行的其余部分。

    在替换中:

    • 复制捕获组匹配的行部分。这些是线路上的第一组数字。

    【讨论】:

    • 你能向我解释一下代码吗(:
    • 添加了详细说明
    • regex 和 sed 在语法上是否相似?
    • sed 使用正则表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2023-03-19
    • 2015-07-06
    • 2019-03-03
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多