grep '123\.123\.123\.123.*\(\.php\|\.html\)' logfile
A menos que, é claro, o .php ou .html preceda o endereço IP:
grep '\(\.php\|\.html\).*123\.123\.123\.123' logfile
Você sempre pode criar um regex que faça as duas coisas, mas uma opção simples é usar dois greps:
grep '123\.123\.123\.123' logfile | grep '\.php\|\.html'
Observe que \. que eu esqueci originalmente corresponde a um ponto real, enquanto um ponto por si só corresponde a qualquer caractere. Pode ser mais fácil omitir o \ , pois é mais fácil de digitar e é improvável que cause problemas. Também grep -F , como na resposta de Hauke, irá corresponder a strings fixas, não há necessidade de \ . grep -E também pode ser usado para ativar expressões estendidas, o que significa que \ antes de cada parêntesis ou | devem ser omitidos.