Если у вас есть опция -P
в вашем grep, чтобы он принимал шаблоны PCRE, вы сможете использовать лучшие регулярные выражения. Иногда помогает минимальный квантификатор, такой как *?
. Кроме того, вы получаете всю строку ввода, а не только само совпадение; если у вас есть опция -o
для grep, она перечислит только ту часть, которая соответствует.
egrep -Po '<a[^<>]*>'
Если ваш grep не имеет этих опций, попробуйте
perl -00 -nle 'print $1 while /(<a[^<>]*>)/gi'
Который теперь пересекает границы линий.
Для реального анализа HTML требуются регулярные выражения, более сложные, чем вы хотите ввести в командной строке. Вот один пример , а - другой . Они могут не убедить вас попробовать подход без регулярных выражений, но они должны по крайней мере показать вам, насколько сложнее в общем случае, чем в конкретных.
Этот ответ показывает, почему все возможно, но не все целесообразно.