Sed - 3 questions

Résolu/Fermé
doudou - 27 sept. 2009 à 05:52
 doudou - 27 sept. 2009 à 11:36
Bonjour,

1 - Afin de vérifier mon code HTML, je voudrais pouvoir retrouver les chaînes de caractères qui contiennent le caractère = et qui sont suivies par un caractère différent de "

Ex chaîne incorrecte : class=small ou class=small"
Ex chaîne correcte : class="small"

2 - Dans le même ordre d'idée j'aimerai pouvoir retrouver les chaînes qui contiennent =" qui sont suivis d'une chaine quelconque et qui ne se terminent pas par "

Ex chaîne incorrecte : class="small

3 - Dans un gros fichier HTML, à coup de copier/coller j'ai commis une faute qui existe 1 millier de fois. j'aimerai pouvoir la corriger d'un coup :

Ex chaine incorrecte : <a name="E1"</a>
Il me faut ajouter > derrière le deuxième "
Ex chaîne correcte : <a name="E1"></a>

NB, je ne peux pas remplacer toutes les chaînes </a> par ></a> certaines sont correctes...
J'aimerai quelque chose du type :
remplacer toutes les chaînes qui contiennent
names="
suivies d'une chaine quelconque et qui se terminent par un autre "
lui-même non suivi de >

Ben si c'est possible un grand MERCI d'avance !!!
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2009 à 09:45
Salut,

2 - Dans le même ordre d'idée j'aimerai pouvoir retrouver les chaînes qui contiennent =" qui sont suivis d'une chaine quelconque et qui ne se terminent pas par "
Mais qui se termine par quoi alors ? Parce il faut bien un élément quelconque de comparaison ;-\

Le mieux serait que tu affiches un bout de ton code html avec les différents exemples incorrects et le même avec les exemples corrigés...

Pour le #3, ceci devrait faire l'affaire déjà :

sed 's#"</a#"></a#'
;-))
0
Déjà MERCI jipicy !

Je fais un résumé, j'avais :

<a name="E1"</a>
<a name="E1P10"</a>
<a name="E1P10CS"</a>
<a class=small href="./Ethique.html#E1">
<a class="small href="./Ethique.html#E1P10">
<a class=small" href="./Ethique.html#E1P10CS">
<a class="small" href="./Ethique.html#N2" title="N2">N2</a>

Donc c'est OK pour le #3 :

# sed 's#"</a#"></a#' ess

[ J'ai bien :

<a name="E1"></a>
<a name="E1P10"></a>
<a name="E1P10CS"></a>
<a class=small href="./Ethique.html#E1">
<a class="small href="./Ethique.html#E1P10">
<a class=small" href="./Ethique.html#E1P10CS">
<a class="small" href="./Ethique.html#N2" title="N2">N2</a>

C'est SUPER ! ça m'économise une demi-journée de travail ! La prochaine fois je ferai gaffe avant de faire des copier/coller à la chaïne !

Pour les 3 derniers, je l'ai fait sous VI :
:1,$s/class=small /class="small" /g
:1,$s/class=small" /class="small" /g
:1,$s/class="small /class="small" /g

Ce n'est pas du grand art comme toi :) mais ça marche !

Donc le sujet est [Résolu]

Encore MERCI et bon dimanche !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2009 à 11:29
[tmpfs]$ cat plop
<a name="E1"</a>
<a name="E1P10"</a>
<a name="E1P10CS"</a>
<a class=small href="./Ethique.html#E1">
<a class="small href="./Ethique.html#E1P10">
<a class=small" href="./Ethique.html#E1P10CS">
<a class="small" href="./Ethique.html#N2" title="N2">N2</a>

[tmpfs]$ sed 's#"</a#"></a#;s/=small \|="small \|=small" /="small" /' plop
<a name="E1"></a>
<a name="E1P10"></a>
<a name="E1P10CS"></a>
<a class="small" href="./Ethique.html#E1">
<a class="small" href="./Ethique.html#E1P10">
<a class="small" href="./Ethique.html#E1P10CS">
<a class="small" href="./Ethique.html#N2" title="N2">N2</a>

[tmpfs]$
;-))
0
Tout bonnement ÉPOUSTOUFLANT !
:-)))
MERCI
0