Ajouter un pattern dans mon script AWK

Résolu
Bonjour,

j'ai un script AWK pour extraire des données dans un fichier XML et je souhaiterais ajouté une commande qui me permettra de faire sortir un élément dans le output

le script

awk -F "[<>]" '/<p name="inventoryUnitType">/ {UT=$3} /<p name="serialNumber">/ {SN=$3} /<\/managedObject>/ {print UT ";" SN}'  monfichierXML


monfichierXML

 <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-1" id="4460207">
<p name="inventoryUnitType">FHEB</p>
<p name="serialNumber">1M171100064</p>
<p name="vendorName">N</p>
<p name="vendorUnitFamilyType">RRH2.3</p>
<p name="vendorUnitTypeNumber">47</p>
<p name="versionNumber">103</p>
</managedObject>
<managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-20732/HW-1/RMOD-2" id="4525297">
<p name="inventoryUnitType">FRMF</p>
<p name="serialNumber">F7181230100</p>
<p name="vendorName">N</p>
<p name="vendorUnitFamilyType">R3.2</p>
<p name="vendorUnitTypeNumber">47</p>
<p name="versionNumber">102</p>
</managedObject>


j'obtiens normalement


FHEB ; 1M171100064
FRMF ; F7181230100


et je souhaiterais avoir l'output ci-dessous avec mon code AWK

MRBTS-22111 ; FHEB ; 1M171100064
MRBTS-20732 ; FRMF ; F7181230100


Merci d'avance

Configuration: Windows / Chrome 81.0.4044.138

6 réponses

  1. Contributeur
    hello
    $ awk -F "[<>]" '/<managed/ {split($0, a, "/")} /<p name="inventoryUnitType">/ {UT=$3} /<p name="serialNumber">/ {SN=$3} /<\/managedObject>/ {print a[2] ";" UT ";" SN}' monfichierXML
    MRBTS-22111;FHEB;1M171100064
    MRBTS-20732;FRMF;F7181230100
    0
    1. Bonjour Dubcek,

      Merci pour ton retour malheureusement quand j'applique le code à fichier Global j'ai des doublon de Serial number,

      ça peut-être du à quoi STP?

      ci-dessous mon fichier global:

      <?xml version="1.0" encoding="UTF-8"?>
      <Inventory>
              <dateTime>202005101654+0000</dateTime>
              <InventoryUnitNE neType="MRBTS">PLMN-PLMN/MRBTS-22111</InventoryUnitNE>
              <InventoryUnitHw>
      <managedObject class="HW" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1" id="4460205">
            <p name="swVersion">fffggg</p>
            <p name="userLabel">ffff</p>
            <p name="vendorName">N</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-1" id="4460207">
            <p name="inventoryUnitType">FHEB</p>
            <p name="serialNumber">1M171100064</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.3</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">103</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-2" id="4460210">
            <p name="inventoryUnitType">FRMB</p>
            <p name="serialNumber">EA175062586</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.1</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">105</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-3" id="4460209">
            <p name="inventoryUnitType">FHEB</p>
            <p name="serialNumber">1M171438556</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.3</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">103</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-4" id="4460208">
            <p name="inventoryUnitType">FHEB</p>
            <p name="serialNumber">1M171438522</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.3</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">103</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-6" id="4460212">
            <p name="inventoryUnitType">FRMB</p>
            <p name="serialNumber">EA180260898</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.1</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">105</p>
          </managedObject>
          <managedObject class="RMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/RMOD-7" id="4460211">
            <p name="inventoryUnitType">FRMB</p>
            <p name="serialNumber">EA175062584</p>
            <p name="vendorName">N</p>
            <p name="vendorUnitFamilyType">RRH2.1</p>
            <p name="vendorUnitTypeNumber">4</p>
            <p name="versionNumber">105</p>
          </managedObject>
          <managedObject class="CABINET" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1" id="4460206">
            <p name="serialNumber">AS181304226</p>
          </managedObject>
          <managedObject class="BBMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/BBMOD-1" id="4460214">
            <p name="inventoryUnitType">Flexi Baseband Sub-Module FBBC</p>
            <p name="serialNumber">AS183163789</p>
            <p name="vendorUnitTypeNumber">472797A.101</p>
          </managedObject>
          <managedObject class="BBMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/BBMOD-2" id="4460215">
            <p name="inventoryUnitType">Flexi Baseband Sub-Module FBBC</p>
            <p name="serialNumber">AS172530111</p>
            <p name="vendorUnitTypeNumber">4</p>
          </managedObject>
          <managedObject class="SMOD" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/SMOD-1" id="4460213">
            <p name="inventoryUnitType">Flexi System Module Outdoor FSMF</p>
            <p name="serialNumber">AS181304226</p>
            <p name="vendorUnitTypeNumber">4</p>
          </managedObject>
          <managedObject class="SMOD_CORE" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/SMOD-1/SMOD_CORE-1" id="4460217"/>
          <managedObject class="FAN" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/SMOD-1/FAN-1" id="4460218"/>
          <managedObject class="FAN" version="HW1.0" distName="PLMN-PLMN/MRBTS-22111/HW-1/CABINET-1/SMOD-1/FAN-2" id="4460216"/>
          </InventoryUnitHw>
              <InventoryUnitSw>
      </InventoryUnitSw>
              <InventoryUnitLic>
      </InventoryUnitLic>
      </Inventory>
      0
      1. Contributeur
        quel est le résultat attendu ?
        0
        1. Hello Dubcek,

          ci-dessous le résultat attendu pour le fichier Global, chaque unit type avec son Serial number en face.

          Merci

          MRBTS-22111;FHEB;1M171100064
          MRBTS-22111;FRMB;EA175062586
          MRBTS-22111;FHEB;1M171438556
          MRBTS-22111;FHEB;1M171438522
          MRBTS-22111;FRMB;EA180260898
          MRBTS-22111;FRMB;EA175062584
          MRBTS-22111;Flexi Baseband Sub-Module FBBC;AS183163789
          MRBTS-22111;Flexi Baseband Sub-Module FBBC;AS172530111
          MRBTS-22111;Flexi System Module Outdoor FSMF;AS181304226
          0
          1. Contributeur
            $ awk -F "[<>]" '/<managed/ {split($0, a, "/")} /<p name="inventoryUnitType">/ {UT=$3} /<p name="serialNumber">/ {SN=$3} /<\/managedObject>/ && UT {print a[2] ";" UT ";" SN; UT=""}' monfichierXML
            MRBTS-22111;FHEB;1M171100064
            MRBTS-22111;FRMB;EA175062586
            MRBTS-22111;FHEB;1M171438556
            MRBTS-22111;FHEB;1M171438522
            MRBTS-22111;FRMB;EA180260898
            MRBTS-22111;FRMB;EA175062584
            MRBTS-22111;Flexi Baseband Sub-Module FBBC;AS183163789
            MRBTS-22111;Flexi Baseband Sub-Module FBBC;AS172530111
            MRBTS-22111;Flexi System Module Outdoor FSMF;AS181304226
            0
            1. Bonsoir Dubcek,

              Merci beaucoup, c est parfait
              0