我正在编写一个bash脚本,从各种文本条目中提取JIRA票号。我需要做的是这样的事情:
如果文字是:
"blahblahblahblahTEST-123 blah blah blah"
它只返回数字"123"
..
脚本需要检测模式"TEST-"
何时出现,然后在该模式之后立即提取数字,并且只提取那些数字..在这种情况下,它会切断“123”之后的所有内容。它需要足够灵活,它可以返回任意长度的数字(即不仅仅是3位数,但如果它是4位数或5位数或2位数或其他数字,它将起作用。)
我认为答案与正则表达式有关,但那些从来都不是我的强项。
答案 0 :(得分:1)
使用BASH正则表达式:
s='blahblahblahblahTEST-123 blah blah blah'
[[ $s =~ TEST-([0-9]+) ]] && echo "${BASH_REMATCH[1]}"
123
答案 1 :(得分:0)
试试这个:
<强>代码强>
#! /bin/bash
input="blahblahblahblahTEST-123 blah blah blah"
prefix="TEST"
[[ $input =~ $prefix\-([0-9]+) ]] && echo "${BASH_REMATCH[1]}"
<强>输出强>
123
我已设置$prefix
变量,并为其指定您想要作为数字值前缀的值。
因此,您使用bash regex
执行简单匹配并打印输出。