【问题标题】:Extract word and digit from string using SED [duplicate]使用 SED 从字符串中提取单词和数字 [重复]
【发布时间】:2020-08-28 10:35:27
【问题描述】:

如何从 看起来像feature/TIC-9890/some-other-wording的分支名称


我不是 SED 专家,但我想出了:

echo "feature/TIC-000/random-description" |
sed -n 's/.*\(TIC-[0-9]\{1,\}\).*/\1/'

如果TIC-\d+ 字符串在那里,这似乎工作正常, 但如果缺少则返回整个字符串...

但是,如果匹配项不存在,我需要它返回 null 或空字符串。

【问题讨论】:

    标签: regex shell sed


    【解决方案1】:

    您应该添加一个p 选项来打印,然后它应该会飞。为什么因为我们已经通过使用-n 选项停止打印sed,所以当发生替换时,需要使用p 来打印它。

    echo "feature/TIC-000/random-description" | sed -n 's/.*\(TIC-[0-9]\{1,\}\).*/\1/p'
    

    来自man sed页面:

    -n, --quiet, --silent 禁止自动打印模式空间

    p 打印当前模式空间。



    或者根据@anubhava sir 的 cmets,我们可以尝试使用 grep-E 选项:

    echo "feature/TIC-000/random-description" | grep -oE 'TIC-[0-9]+'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2017-01-31
      • 2014-08-21
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      相关资源
      最近更新 更多