Bash 提取与图案匹配的部分线条

Bash 提取与图案匹配的部分线条,bash,Bash,我有一个配置文件,需要使用bash解析出一些值 例如Inside config.txt some_var= Not_needed tests= spec1.rb spec2.rb spec3.rb some_other_var= Also_not_needed 基本上,我只需要获得“spec1.rb spec2.rb spec3.rb”,而不需要从该行删除所有其他行和“tests=” 我有这个,它可以工作,但我希望有一个更简单的方法来做到这一点 while read run_line; do

我有一个配置文件,需要使用bash解析出一些值
例如Inside config.txt

some_var= Not_needed
tests= spec1.rb spec2.rb spec3.rb
some_other_var= Also_not_needed
基本上,我只需要获得“spec1.rb spec2.rb spec3.rb”,而不需要从该行删除所有其他行和“tests=”

我有这个,它可以工作,但我希望有一个更简单的方法来做到这一点

while read run_line; do
if [[ $run_line =~ ^tests=* ]]; then
  echo "FOUND"
  all_selected_specs=`echo ${run_line} | sed 's/^tests= /''/'`
fi
done <${config_file}
echo "${all_selected_specs}"
读取运行线时
;做
如果[$run_line=~^tests=*];然后
回声“发现”
所有_selected_specs=`echo${run_line}sed's/^tests=/'''/'`
fi
完成
使用字段分隔符
“=”
,查找第一个字段为
tests
的行,然后打印第二个字段。

这也可以

grep "^tests" ${config_file} | sed -e "s/^tests= //"

grep和cut怎么样

all_selected_specs=$(grep "^tests=" "$config_file" | cut -d= -f2-)
尝试:


搜索从一行开始的字符串测试,然后替换该行的所有值直到(=)以获得所有规范值,一旦替换,我们就可以获得规范值,以便打印该行。最后使用$(awk…)将其值保存到变量。

为什么不使用
sed-n/../…/p'
在整个文件上运行sed命令?抱歉,不确定您的意思,不幸的是,我不经常使用shell脚本。
mansed
应该有助于澄清。
all_selected_specs=$(grep "^tests=" "$config_file" | cut -d= -f2-)
all_selected_specs=$(awk '/^tests/{sub(/.*= /,"");print}' Input_file)