我有这个字符串
<div style='text-align:center;padding-top:6px;'>Displaying Result 1 - 10 of 10 Matching Services</div>
我需要“of”之后的数字“10”
我的正则表达式现在
if [[ "$WARNING" =~ "of.([0-9]*)" ]]
then
echo "OK: $WARNING"
else
echo "NOK: $WARNING"
fi
有人可以帮我吗?
答案 0 :(得分:2)
=~
。BASH_REMATCH
变量来获取所需的值。尝试:
if [[ "$WARNING" =~ of.([0-9]*) ]]
then
echo "OK: $WARNING"
else
echo "NOK: $WARNING"
fi
echo "${BASH_REMATCH[1]}"
来自manual:
BASH_REMATCH
一个数组变量,其成员由
=~
二元运算符分配给[[
条件命令(请参阅条件构造)。 索引为0的元素是匹配的字符串部分 整个正则表达式。索引为n的元素是。的一部分 匹配第n个带括号的子表达式的字符串。这个变量 是只读的。
答案 1 :(得分:0)
您不需要正则表达式。只需使用bash的内置parameter expansions:
$ x="<div style='text-align:center;padding-top:6px;'>Displaying Result 1 - 10 of 10 Matching Services</div>"
$ x="${x##*of }"
$ echo "${x%% *}"
10
答案 2 :(得分:0)
这是另一个有趣的awk
示例,您可以修改它以提供WARNING
[[bash_prompt$]]$ cat log
<div style='text-align:center;padding-top:6px;'>Displaying Result 1 - 10 of 10 Matching Services</div>
[[bash_prompt$]]$ awk '/of [0-9]*/{l=gensub(/^.*of ([0-9]*).*$/,"\\1",1); if(l > 10) print "greater"; else print "smaller"}' log
smaller