Como apontado nos comentários, algo como awk
pode ser mais adequado para isso do que tentar fazer isso no shell:
/\/oai\/request/ { print "first option" ; next }
/\/index\.php\/[^/]+\/journal=/ { print "second option"; next }
/\/[Ee][Tt][dD]-[Dd][Bb]\// { print "third option" ; next }
/\/handle\/[0-9]+\/[0-9]/ || /\/browse/ { print "fourth option"; next }
{ print "no match" }
Então:
$ awk -f script.awk inputfile
em que inputfile
é um arquivo que contém URLs, um por linha (por exemplo).
Relacionados: Por que está usando um loop de shell para processar texto considerado uma prática ruim?