tabasseur wrote:Sinon, j'en demande beaucoup, mais est-ce que tu pourrais commenter au moins rapidement les lignes de ton programme ?
Parce qu'à part le find, je ne comprend pas ce qu'il se passe, ni la manière de procéder.
Chouette! une petite relecture de code...
Dans ce petit script awk,
i est une variable d'état.
Elle prend deux valeurs:
*
0: la ligne courante traitée pas awk ([c]$0[/c]) est
en dehors d'un bloc [c]<div id="pied">...</div>[/c]
Dans cet état, le script analyse si la ligne courante ne serait pas un début de bloc: [c]if ( $0 == "<div id=\"pied\">" ) {[/c]
Si c'est le cas, le script change d'état : [c]i = 1[/c] et la ligne courante n'est pas écrite dans le fichier de sortie
Si ce n'est pas le cas, elle est écrite dans le fichier de sortie [c]print $0[/c]
*
1: la ligne courante est
en dans un bloc [c]<div id="pied">...</div>[/c]
Dans cet état, le script analyse si la ligne courante ne serait pas une fin de bloc: [c]if ( $0 == "</div>" ) {[/c]
Si c'est le cas, elle le script repasse à l'état : [c]i = 0[/c]
Dans tous les cas la ligne courante n'est pas écrite dans le fichier de sortie
Ce script pourrait être étendu, dans un premier temps, comme suit:
awk 'BEGIN { i = 0 } ;
{
if ( i > 0 ) {
if ( $0 == "</div>" ) {
i--
} else {
if ( $0 ~ /^<div .*>$/ ) { # Utilisation d'une expression régulière pour traiter les <div > imbriqués
i++
}
}
} else {
if ( $0 == "<div id=\"pied\">" ) {
i++
} else {
print $0
}
}
}' $f > $f.new
A+
A