我正在阅读这个其他问题,其中有一些非常好的正则表达式,但据我所见,它们中没有任何一个可以与BASH命令一起使用,因为BASH命令不支持如此复杂的正则表达式。
if echo "http://www.google.com/test/link.php" | grep -q '(https?|ftp|file)://[-A-Z0-9\+&@#/%?=~_|!:,.;]*[-A-Z0-9\+&@#/%=~_|]'; then
echo "Link valid"
else
echo "Link not valid"
fi
但是这并不起作用,因为grep -q不能正常工作...
编辑,好的,我刚刚意识到grep有一个“扩展正则表达式”(-E)选项,看起来它可以正常工作。但如果有更好/更快的方法,我仍然很想了解。