Cela fonctionne pour moi:
sed -e "s/<tr/<TR bgcolor='#E0E0E0'/g;n" simpletable.htm
entrée échantillon:
sortie
<table>
<tr><td>Row1/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row2/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row3/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row4/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row5/col1</td><td>col2</td><td>col3</td></tr>
</table>
exemple:
<table>
<TR bgcolor='#E0E0E0'><td>Row1/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row2/col1</td><td>col2</td><td>col3</td></tr>
<TR bgcolor='#E0E0E0'><td>Row3/col1</td><td>col2</td><td>col3</td></tr>
<tr><td>Row4/col1</td><td>col2</td><td>col3</td></tr>
<TR bgcolor='#E0E0E0'><td>Row5/col1</td><td>col2</td><td>col3</td></tr>
</table>
La clé consiste à utiliser la commande n
dans sed, qui passe à la ligne suivante. Cela ne fonctionne que si les TR occupent des lignes distinctes. Il va rompre avec les tables imbriquées, ou s'il y a plusieurs TR sur une seule ligne.
En outre, cette commande ne fonctionne que s'il n'y a rien, sauf 'tr's in row, non? Le 'tr' devrait commencer et finir dans la même ligne et ne peut pas avoir de lignes vides entre eux. Ai-je raison? (Néanmoins, je trouve votre solution très instructive car je ne suis pas habitué à la commande 'n'). – brandizzi
Il remplace chaque occurrence impaire, mais comment la modifier pour chaque occurrence paire? – Offenso