if [[ $(/opt/CrowdStrike/falconctl -g --aid | grep 'aid=') =~ ^aid=\"(.+)\"$ ]]; then
aid=${BASH_REMATCH[0]}
echo "aid is $aid"
else
echo "aid not found"
fi
$ head falcon*out
==> falcon.1.out <==
some stuff
aid="fdwe234wfgrgf34tfsf23rwefwef3".
some more stuff
==> falcon.2.out <==
some stuff
aid=""
some more stuff
一个grep创意:
grep -Eq '^aid="[^"]+"' <filename>
其中:
-E-启用扩展regex支持
-q-以静默/安静模式运行(抑制所有输出)
可以从$?捕获返回代码
试驾:
for fname in falcon*out
do
printf "\n############# %s\n" "$fname"
cat "$fname" | grep -Eq '^aid="[^"]+"' "$fname"
echo "return code: $?"
done
2条答案
按热度按时间zkure5ic1#
你可以使用正则表达式来检查双引号内是否存在一个或多个字符,也可以使用正则表达式捕获组来提取该值:
注意,我使用的正则表达式是
.+
,它表示1个或更多字符,因为你要求字符串非空,这与通常的.*
正则表达式相反,它应该是0个或更多字符。laximzn52#
我的系统上没有
falconctl
,因此为了模拟它的输出,我将使用两个文件:一个
grep
创意:其中:
-E
-启用扩展regex支持-q
-以静默/安静模式运行(抑制所有输出)$?
捕获返回代码试驾:
这将产生: