Если вы используете sed следующим образом:
sed -e '/<a/{:begin;/<\/a>/!{N;b begin};s/<a\([^<]*\)<\/a>/\n/;/<a/b begin}'
, тогда он будет печататься в разных строках:
123456
789
0123
Но это то, что вы пытаетесь напечатать?Или вы хотите печатать текст в hrefs?
Обновление 1: чтобы получить hrefs между правильно сформированными <a
и </a>
sed -r '$!N; s~\n~~; s~(<a )~\n\1~ig; s~[^<]*<a[^>]*href\s*=\s*"([^"]*)"[^\n]*~\1\n~ig' test
output
link1
link2
Обновление 2: получение указанного выше результата с помощью функции bash regex
regex='href="([^"]*)"'
while read line; do
[[ $line =~ $regex ]] || continue
echo ${BASH_REMATCH[1]}
done < test
output
link1
link2