Tente isto:
$ echo -e '<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>[email protected]</td></tr>\n<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>[email protected]</td></tr>' | \
awk -F'</td><td>' 'gsub(/.*@/,"",$9)' OFS='</td><td>'
<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>example.com</td></tr>
<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>example2.com</td></tr>
O divisor </td><td>
divide a linha em 9
fields. O e-mail é o número de campo 9th
, você pode remover todos os caracteres antes do campo @
in 9th
para obter a saída desejada.
Se você não precisar usar awk
, tente perl
:
perl -pe 's#(.*)<td>.*@(.*)#$1<td>$2#'