获取数字字符串作为段落字符串的输出

获取数字字符串作为段落字符串的输出

我有一个输出存储在来自.jar脚本的变量中

Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733

#现在我想在ie之后提取 ID14214733并将其存储在另一个变量中,我该如何在 bash 中做到这一点?

编辑:使用解决echo ${var##*#}

答案1

使用bash,用正则表达式捕获它

output='Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733'

[[ $output =~ "Found with ID : #"([0-9]+) ]] && id=${BASH_REMATCH[1]}

echo $id    # => 14214733

在 bash 正则表达式中,文字文本部分被引用,而正则表达式特殊的内容则没有。捕获的部分进入 BASH_REMATCH 数组。

答案2

一种方法是:

sec_var=`cat ts.txt | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`
sec_var=`echo $first_var | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`

您也可以使用 grep“-z”选项:

-z 抑制行尾的换行符,将其替换为空字符。也就是说,grep 知道行尾在哪里,但将输入视为一大行。

相关内容