bash有点新鲜。
我已经尝试过参数扩展,grep,sed和echo来解决这个问题,但是不能完全解决这个问题。
我试图在bash脚本中从$ PWD中提取某个模式。
让我们说可能有各种各样的完整路径:
/home/files/tmp8
/home/tmp28/essential
/home/tmp2/essential/log
/home/files/tmp10/executables
/tmp8/files/whatever/etc
在每个实例中,我想提取包含" tmp"的任何字符串。然后是1个或更多整数。
因此,在处理$ PWD的每个实例中,它将返回" tmp8"," tmp28"," tmp2"等。
关于功能/操作员如何解决这个问题的解释也将不胜感激。
答案 0 :(得分:3)
您可以在bash中使用正则表达式从任何路径字符串中提取模式。请参阅以下示例:
if [[ "$PWD" =~ ^.*(tmp[0-9]+).*$ ]]
then
printf "match: ${BASH_REMATCH[1]}\n"
else
printf "no match: $PWD\n"
fi
正则表达式在圆括号中定义一个组。 如果表达式匹配匹配组(tmp后面至少有一个数字),它将由Bash存储在数组BASH_REMATCH中。
答案 1 :(得分:1)
使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" checked id="chkDocId1" myattribute="myval1"/>
<input type="checkbox" id="chkDocId2" myattribute="myval43"/>
<input type="checkbox" checked id="chkDocId3" myattribute="myval21"/>
仅使用正则表达式grep -o
显示匹配的文字,即文字tmp[0-9]*
后跟0或更多数字:
tmp