【问题标题】:How to extract particular text after specific pattern in string如何在字符串中的特定模式之后提取特定文本
【发布时间】:2019-08-29 14:12:52
【问题描述】:

我有一些 Bash 代码计划从字符串中提取 ID。我已经尝试我的代码在模式“ID:”之后找到 ID。它正在提取 ID 值,但之后它会在 ID 之后获取剩余的文本。我只想提取该行中的 ID 而不是剩余的文本。

我试过下面的代码

$ string="ID: 2454-45-343-345 this is generated ID"
$ output="${string#*ID: }"
$ echo $output

输出

2454-45-343-345 this is generated ID

我期望输出应该只是 2454-45-343-345 而不是剩余的文本

【问题讨论】:

    标签: bash


    【解决方案1】:

    您可以在第二步中从output 中删除不需要的尾部:

     output="${string#*ID: }"
     output=${output%% *}
    

    【讨论】:

      【解决方案2】:

      这是一种方法。假设您在一行中只有一个 ID 与 ID 模式匹配:

      string="ID: 2454-45-343-345 this is generated ID"
      output="${string//[!0-9+-]/}"
      echo $output
      

      【讨论】:

        【解决方案3】:

        如果您对awk 解决方案感到满意,请尝试。

        echo "$string" | awk 'match($0,/[0-9]+\-[0-9+\-[0-9]+\-[0-9]+/){print substr($0,RSTART,RLENGTH)}'
        

        【讨论】:

        • @mandar joshi,你能告诉我这对你有用吗?
        猜你喜欢
        • 2017-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-05-31
        • 1970-01-01
        • 2020-08-09
        • 1970-01-01
        相关资源
        最近更新 更多