Eu acredito que você poderia tentar (?:(?!X).)
com PCRE, definitivamente funciona quando X
é uma string, mas não tenho 100% de certeza de que funcionaria o tempo todo quando X
é uma regex.
echo "dust mite" | grep -P '^(?:(?!abc).)*$'
dust mite
echo "dust abc mite" | grep -P '^(?:(?!abc).)*$'
echo "dust mite" | grep -P '^(?:(?!abc(x+y)).)*$'
dust mite
echo "dust abcxxxxy mite" | grep -P '^(?:(?!abc(x+y)).)*$'