Se o segundo termo estiver vazio ou não definido, não execute o segundo grep
:
grep -e "$term1" <file |
if [ -n "$term2" ]; then
grep -e "$term2"
else
cat
fi
Isso aplica grep
com o padrão em $term1
ao arquivo chamado file
e, dependendo se $term2
não está vazio, aplica um segundo grep
ao resultado ou usa cat
como um filtro de passagem.
Observe que isso efetivamente implementa " term1
AND term2
", exceto quando term2
está vazio no qual se degenera em apenas " term1
".
Se preferir não executar grep
e, em vez disso, retornar um resultado vazio quando o segundo termo estiver vazio:
if [ -n "$term2" ]; then
grep -e "$term1" <file | grep -e "$term2"
fi
Isso efetivamente implementa " term1
AND term2
" e trata um term2
vazio como "falso".
O benefício disso é que ela depende apenas do padrão grep
e de que os dois padrões são mantidos separados, o que facilita a compreensão e a manutenção.