![获取数字字符串作为段落字符串的输出](https://linux22.com/image/13949/%E8%8E%B7%E5%8F%96%E6%95%B0%E5%AD%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%9C%E4%B8%BA%E6%AE%B5%E8%90%BD%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E8%BE%93%E5%87%BA.png)
我有一个输出存储在来自.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 知道行尾在哪里,但将输入视为一大行。