Acho que minha resposta para outro post é mais adequada aqui. Graças a este post e outros como ele eu vim com isso, que procura o formato IP correto, em seguida, se livrar de todas as linhas que contenham 256 ou superior. Substitua o IP por algo que não seja válido para não ver nenhuma saída:
echo '255.154.12.231' | grep -E '(([0-9]{1,3})\.){3}([0-9]{1,3}){1}' | grep -vE '25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]'
O primeiro grep provavelmente foi encontrado neste post e ele verifica qualquer número de 0-999 no formato X.X.X.X
O segundo grep remove linhas com números de 256 a 999, deixando assim apenas IPs de formato válidos, então eu pensei
MAS ...
Como apontado pelo G-Man, eu estava errado ao assumir que o IP estaria em sua própria linha. Mais sempre, porém, haverá um espaço ou outro divisor para procurar em ambos os lados do IP. Os espaços / divisores podem ser removidos com sed ou outros meios após o IP ser encontrado. Eu também adicionei -o ao primeiro grep:
echo ' 1234.5.5.4321 ' | grep -Eo ' (([0-9]{1,3})\.){3}([0-9]{1,3}){1} ' | grep -vE '25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]' | sed 's/ //'
echo ' 234.5.5.432 ' | grep -Eo ' (([0-9]{1,3})\.){3}([0-9]{1,3}){1} ' | grep -vE '25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]' | sed 's/ //'
O primeiro não dará saída, enquanto o segundo e os espaços serão removidos.