Sed - 3 questions

Résolu
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 !!!
Configuration: Linux
Firefox 3.5.2

3 réponses

  1. Modérateur
    [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]$
    ;-))
    1. Modérateur
      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#'
      ;-))
      1. 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 !