Isso faz o que você quer:
$ awk -F'</*td>' '$2{print $2}' someFile
Isso funciona definindo um argumento de divisão que corresponde ao início <td>
, bem como a finalização </td>
. Isso isola a string no meio como campo $2
. O restante imprimirá $2
, se estiver definido.
Exemplo
$ cat someFile
!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>
A Small Hello
</TITLE>
</HEAD>
<BODY>
<table><td>hello world</td></table>
<table><td>hello world</td></table>
<table><td>hello world</td></table>
<table>
<td>hello world</td>
</table>
<H1>Hi</H1>
<P>This is very minimal "hello world" HTML document.</P>
</BODY>
</HTML>
Saída:
$ awk -F'</*td>' '$2{print $2}' someFile
hello world
hello world
hello world
hello world