我需要一个字符串来检查正则表达式,并且匹配结果应该返回到一个变量中。
我逐行读取数据,为此,我必须从该行中提取一些数据。我检查了该行的值,如果为真,我需要将正则表达式匹配结果返回,以将其存储在值中。
所有这些都必须在 bash 中完成。
有没有什么好的方法?
答案1
您可以=~
在[[ .. ]]
条件中使用运算符。圆括号引入捕获组,如果匹配,它们将填充 BASH_REMATCH 数组。
#! /bin/bash
while read line ; do
if [[ $line =~ d(.)f ]] ; then
matched=${BASH_REMATCH[1]}
fi
done < <(printf '%s\n' abc def ghi)
echo "Matched $matched."