perl -nle'
($text) = /text="(.*?)"/ ;
($url) = /xmlUrl=(".*?")/ ;
($title) = /htmlUrl=(".*?")/;
/./ and printf "<a href=%s title=%s>%s</a>\n",
$url, $title, $text;
' infile
При условии, что в заинтересованных частях нет встроенных новых строк.
С XMLgawk :
xgawk -lxml 'XMLSTARTELEM {
printf "<a href=%s title=>%s>%s</a>\n",
q XMLATTR["xmlUrl"] q, q XMLATTR["htmlUrl"] q, XMLATTR["text"]
}' q=\" infile
Редактировать: Perl решение может быть переписано с одним регулярным выражением:
perl -nle'
/text="(.*?)".*xmlUrl=(".*?").*htmlUrl=(".*?")/
and printf "<a href=%s title=%s>%s</a>\n",
$2, $3, $1;
' infile