Использование одного только grep без массирования файла выполнимо, но не рекомендуется, как многие отметили в комментариях.
Если вы можете немного ослабить ваши требования, тогда вы можете использовать html tidy чтобы массировать загруженный HTML-файл так, чтобы каждый html-объект находился в одной строке, чтобы регулярное выражение могло быть проще, чем вы хотели, примерно так:
$ tidy file.html|grep -o 'http://[[:print:]]*.jpg'
Обратите внимание на использование "-o"опция grep для печати только соответствующей части ввода