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
    $ 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
    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
      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>
        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