Remplacement avec Awk

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais faire un remplacement sur 100 lignes de la valeur du parametres vlanId ci-dessous 3 par 6 dans l'objet VLANIF-1

et pour VLANIF-2 le parametre vlanId 30 par 31.


<managedObject class="com:VLANIF" version="" distName="11036/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-1" operation="update">
<p name="vlanId">3</p>
</managedObject>



<managedObject class="com:VLANIF" version="" distName="11036/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-2" operation="update">
<p name="vlanId">30</p>
</managedObject>


merci d'avance.

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ awk '/VLANIF-1/ {n=6} /VLANIF-2/ {n=31} /vlanId/ {sub(">[0-9]+<", ">" n "<")} {print}' fichier
    <managedObject class="com:VLANIF" version="" distName="11036/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-1" operation="update">
    <p name="vlanId">6</p>
    </managedObject>

    <managedObject class="com:VLANIF" version="" distName="11036/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-2" operation="update">
    <p name="vlanId">31</p>
    </managedObject>
    0
  2. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour Dubcek

    Merci pour ton retour , c'est Parfait.

    Thank you
    0
  3. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Dubcek,

    pour la regular expression
    ">[0-9]+<"
    que dois je mettre s'il s'agit d'addresse IP a la place d'un nombre entier.

    Cdlt.
    0
  4. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Dubcek,

    le meme exemple ma je dois remplacé des addresse IP


    <managedObject class="IPIF" distName="10048/TNL-1/IPNO-1/IPIF-1" operation="create" version="16.1">
    <p name="ipMtu">1500</p>
    <p name="interfacePtr">ETHIF-1/VLANIF-1</p>
    <list name="ipAddrList">
    <item>
    <p name="ipAddrIdentifier">1</p>
    <p name="localIpAddr">10.2.1.0</p>
    <p name="localIpPrefixLength">28</p>
    </item>
    </list>
    </managedObject>


    mon exemple::

    awk '/IPIF-1/ {n="1.0.0.0"} /localIpAddr/ {sub(">[0-9].[0-9].[0-9].[0-9]+<", ">" n "<")} {print}'  fichier


    et je n'obtient pas de changement.

    merci pour ton support.

    BR
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      essayer
      $ awk '/IPIF-1/ {n="1.0.0.0"} /localIpAddr/ {sub(">[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+<", ">" n "<")} {print}'  fichier
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    Hello dubcek,

    Merci bcp c'est impeccable

    BR
    0
  7. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    Hello Dubcek,

    Stp et dans le cas ou j'ai plusieurs IP a modifier dans le même object IPIF-1 comment dois-je procéder. voir l'exemple


    awk '/IPIF-1/ {n="1.0.0.0"} {n="1.0.0.2"} /localIpAddr/ {sub(">[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+<", ">" n "<")} {print}' fichier



    <managedObject class="IPIF" distName="10048/TNL-1/IPNO-1/IPIF-1" operation="create" version="16.1">
    <p name="ipMtu">1500</p>
    <p name="interfacePtr">ETHIF-1/VLANIF-1</p>
    <list name="ipAddrList">
    <item>
    <p name="ipAddrIdentifier">1</p>
    <p name="localIpAddr">10.0.0.0</p>
    <p name="localIpPrefixLength">28</p>
    </item>
    <item>
    <p name="ipAddrIdentifier">1</p>
    <p name="localIpAddr">10.0.0.2</p>
    <p name="localIpPrefixLength">28</p>
    </item>
    </list>
    </managedObject>
    0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    avec un tableau
    $ awk '/IPIF-1/ {n=1; t[1]="1.0.0.0"; t[2]="1.0.0.2"} /localIpAddr/ {sub(">[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+<", ">" t[n++] "<")} {print}'  fichier 
    <managedObject class="IPIF" distName="10048/TNL-1/IPNO-1/IPIF-1" operation="create" version="16.1">
    <p name="ipMtu">1500</p>
    <p name="interfacePtr">ETHIF-1/VLANIF-1</p>
    <list name="ipAddrList">
    <item>
    <p name="ipAddrIdentifier">1</p>
    <p name="localIpAddr">1.0.0.0</p>
    <p name="localIpPrefixLength">28</p>
    </item>
    <item>
    <p name="ipAddrIdentifier">1</p>
    <p name="localIpAddr">1.0.0.2</p>
    <p name="localIpPrefixLength">28</p>
    </item>
    </list>
    </managedObject>
    0
  9. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    Bnsoir Dubcek,

    c est Parfait!!

    Merci encore une fois pour ton aide.

    Cdlt.
    0