Remplacement avec Awk

Résolu
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. Bnsoir Dubcek,

    c est Parfait!!

    Merci encore une fois pour ton aide.

    Cdlt.
    1. Contributeur
      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>
      1. 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>
        1. 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
          1. Contributeur
            essayer
            $ awk '/IPIF-1/ {n="1.0.0.0"} /localIpAddr/ {sub(">[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+<", ">" n "<")} {print}'  fichier
        2. 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.
          1. bonjour Dubcek

            Merci pour ton retour , c'est Parfait.

            Thank you
            1. Contributeur
              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>